Rails |根据用户选择设置cookie
Rails | Setting cookies according to user selection
我想将用户选择的值存储在 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 个控制器,但我希望用户可以访问页脚处的任何操作。
谢谢
表单可能是明智的,因为它允许您使用 select、单选按钮或其他字段类型来更新货币。
但是,您可以通过使用一些 link 非常简单地实现此目的,例如以下内容。
在视图中:
<%= link_to '€', your_currency_update_path(curr: '€') %>
在控制器中:
def your_currency_update_action
cookies[:curr] = params[:curr]
redirect_to :back
end
单击此 link 将点击控制器并传递 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();" %>
这个 link/ 表单是从哪个页面提交的并不重要,因为它总是会触发您选择处理此问题的控制器操作,然后再重定向回来。
希望对您有所帮助 - 如果您有任何问题,请告诉我您的情况。
我想将用户选择的值存储在 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 个控制器,但我希望用户可以访问页脚处的任何操作。
谢谢
表单可能是明智的,因为它允许您使用 select、单选按钮或其他字段类型来更新货币。
但是,您可以通过使用一些 link 非常简单地实现此目的,例如以下内容。
在视图中:
<%= link_to '€', your_currency_update_path(curr: '€') %>
在控制器中:
def your_currency_update_action
cookies[:curr] = params[:curr]
redirect_to :back
end
单击此 link 将点击控制器并传递 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();" %>
这个 link/ 表单是从哪个页面提交的并不重要,因为它总是会触发您选择处理此问题的控制器操作,然后再重定向回来。
希望对您有所帮助 - 如果您有任何问题,请告诉我您的情况。