#ruby-on-rails #ruby-on-rails-6 #actionview
#ruby-on-rails #ruby-on-rails-6 #actionview
Вопрос:
Я могу ссылаться на ту же страницу, сохраняя текущие параметры (за исключением параметра страницы) с помощью этого
<%= link_to 'test', request.params.except(:page) %>
Возможно ли это сделать с помощью формы? Я думал, что это сработает, но это не сохраняет параметры
<%= form_with(path: request.params.except(:page), method: "get", local: true) do %>
это тоже не сработало
<%= form_with(path: params.except(:page), method: "get", local: true) do %>
Комментарии:
1. Что именно вы пытаетесь сделать?
2. У меня есть следующая форма поиска, которая отлично работает, но мне нужно сохранить текущие параметры
<%= form_with(path: request.fullpath, method: "get") do %><%= text_field_tag :query, params[:query] %><% end %>
3. формы обычно включают объекты, которые обычно восстанавливаются из параметров, поэтому кажется, что вы пытаетесь изобрести колесо, которое не нужно изобретать заново. Почему бы просто не использовать form_with(object ….) ?
4. не могли бы вы сообщить мне, что вы подразумеваете под form_with(object)? Мой Rails fu недостаточно силен, чтобы знать, что делать дальше с этим
Ответ №1:
Я не смог передать параметры в URL с формой. Это кажется немного странным, но следующее работает, отправляя параметры в виде скрытых полей. Например, если вы хотите сохранить параметры с именами «состояние» и «порядок» в вашей форме поиска, вы можете сделать это. Это безопаснее, чем то, что я пробовал выше, поскольку оно явно вносит в белый список разрешенные параметры (вместо удаления нежелательных параметров, например, «страница» выше)
<% request.params.slice("state", "order").each do |key, value| %>
<%= hidden_field_tag key, value %>
<% end %>