我正在處理一個表單,該表單應允許用戶更新名爲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