Рельсы |Настройка куки в соответствии с выбором пользователя - PullRequest
0 голосов
/ 08 июня 2018

Я хотел бы сохранить выбранное пользователем значение при просмотре файлов 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 контроллер, но я хочу, чтобы пользователь имел доступ к любому действию, так как оно будет в нижнем колонтитуле.

Спасибо

1 Ответ

0 голосов
/ 08 июня 2018

Форма может быть разумной, так как она позволит вам использовать select, переключатели или другой тип поля для обновления валюты.

Однако вы можете достичь этого очень просто, используя пару ссылок, например:

В представлении:

<%= 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();" %>

Неважно, с какой страницы отправляется эта ссылка / форма, так как она всегда будет попадать в действие контроллера, которое вы решите обработать, до перенаправления назад.

Надеюсь, это поможет - дайте мне знать, как вы поживаете или если у вас есть какие-либо вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...