3

我有一个显示事件列表的页面。单击事件时,它会将您带到登录页面,并将会话 ID 与页面一起保存。当我转到下一页时,它总是发送最后一个会话变量。

<% @events.each do |e| %>
<%= link_to e.event_name, sessions_new_path %>
<%= e.event_start %> - <%= e.event_stop %>
<% session[:event_id] = e.id %>
<%= session[:event_id] %>
<br>
<% end %>

这表明 session[:event_id] 存在并且它存储在变量中,但是当我单击链接时,它将发送循环的最后一个 session[:event_id]。任何想法都会有所帮助。我正在考虑将变量传递到下一页或将其存储到数据库单元中的选项,但不确定会话如何存储在数据库中。

4

1 回答 1

2

假设您使用 ActiveRecord 支持的数据库,您可以通过编辑 your_app/config/initializers/session_store.rb 来配置应用程序以将会话存储在数据库中:

YourApp::Application.config.session_store :active_record_store

确保注释掉或删除该行:

# YourApp::Application.config.session_store :cookie_store, :key => '_your_app_session'

此外,还有一些 auth gem 可以在登录后将用户重定向到受保护的页面。如果您还没有,请查看Devise和/或authlogic。就个人而言,我更喜欢设计。

于 2013-04-03T12:17:35.007 回答