我正在处理一个表单,该表单应允许用户更新名为session[:city]
的会话变量,以跟踪其位置。该变量不需要保存在数据库中,因为它是一种一次性的;只有在用户在网站上时才需要存在。是否有可能使用Rails中的表单更新会话变量?
session[:city]
在整个网站的几个地方使用,所以我放在下面的方法在应用程序控制器:
class ApplicationController < ActionController::Base
before_filter :set_city
def set_city
unless session[:city].present?
session[:city] = request.location.city
end
if params[:city].present?
session[:city] = params[:city]
end
end
end
这部分工作正常,我可以调用整个变量现场。
我遇到的问题是通过表单更新变量。我需要做的唯一操作是更新变量,但它没有响应。我知道我在这里错过了一些东西,但在尝试了一堆东西之后,我有点难过。这是我目前基本形式:
<%= form_tag do %>
<%= text_field_tag :city, params[:city] %>
<%= submit_tag %>
<% end %>
编辑,以工作代码
如果我换成'会议所有'@ city'实例[:城市]'会在生产环境中的工作?我能否通过用户提交的表单更新会话变量? – BHOLT
否。将它作为参数传递给控制器并在控制器中设置会话 – usha
这使得我的表单可以在单个页面上工作,但只要我离开,它就会丢失值。有什么我失踪的会话变量,所以它贯穿整个网站? – BHOLT