我想将用户选择的值存储在rails中的cookie上。
因此会有2个链接作为货币,例如;欧元和美元。当用户选择/单击其中一个链接时,它应该更新cookies[:curr]
。然后,操作应使用redirect_to :back
我的问题是,我想将此选项添加到页脚。因此,用户可以在网站上的任何位置访问此选项。但是,当用户在主页或任何其他控制器上选择时,如何更改cookies[:curr]
值?
我将以下函数放到应用程序控制器中以检查cookies[:curr]
def return_currency
if cookies[:curr].blank? || cookies[:curr].nil?
'€' #default
elsif cookies[:curr] == 'USD'
'$'
end
end
所以在这里,我可以检查值,但是,我无法弄清楚如何分配用户选择的值。它应该是form_for
吗?但是我只能将数据发送到1个控制器,但我希望用户可以访问任何操作,因为它将位于页脚。
谢谢
答案 0 :(得分:3)
表单可能是合理的,因为它允许您使用选择,单选按钮或其他字段类型来更新货币。
但是,您可以通过使用一些链接(例如以下内容)来实现此目的。
在视图中:
<%= link_to '€', your_currency_update_path(curr: '€') %>
在控制器中:
def your_currency_update_action
cookies[:curr] = params[:curr]
redirect_to :back
end
点击此链接会点击控制器传递params[:curr]
并将用户重定向到他们的位置。
或者使用这样的表格:
<%= form_tag(your_currency_update_path, method: :post) do %>
<%= select_tag :curr, options_for_select([['€'], ['$']) %>
<%= submit_tag "Update Currency" %>
<% end %>
最后,您可以使用以下内容自动提交表单的提交按钮:
<%= select_tag :curr, options_for_select([['€'], ['$']) %>, onchange: "this.form.submit();" %>
提交此链接/表单的页面无关紧要,因为它会在重定向之前始终点击您选择处理此操作的控制器操作。
希望有所帮助 - 让我知道你是如何进行的,或者如果你有任何问题。