我正在开发一个表单,该表单应该允许用户更新一个称为session[:city]
跟踪其位置的会话变量。该变量不需要保存在数据库中,因为它是一种一次性的;它只需要在用户在网站上时存在。
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 %>
编辑为工作代码