【问题标题】:How to create a form and keep the existing params如何创建表单并保留现有参数
【发布时间】:2020-12-16 15:06:57
【问题描述】:

我可以用这个链接到保持当前参数(页面参数除外)的同一页面

<%= 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 %>

【问题讨论】:

  • 你到底想做什么?
  • 我有以下搜索表单,效果很好,但我需要保留当前参数&lt;%= form_with(path: request.fullpath, method: "get") do %&gt;&lt;%= text_field_tag :query, params[:query] %&gt;&lt;% end %&gt;
  • 表单通常涉及对象,这些对象通常由参数重构,因此您似乎正在尝试重新发明一个不需要重新发明的轮子。为什么不直接使用 form_with(object....) ?
  • 你能告诉我你所说的form_with(object)是什么意思吗?我的 Rails fu 不够强大,不知道下一步该去哪里

标签: ruby-on-rails ruby-on-rails-6 actionview


【解决方案1】:

我无法使用表单在 URL 中传递参数。这感觉有点 hacky,但以下通过将参数作为隐藏字段发送来工作。例如,如果您想在搜索表单中保留名为“state”和“order”的参数,您可以这样做。这比我上面尝试的更安全,因为它明确地将允许的参数列入白名单(而不是删除你不想要的参数,如上面的“页面”)

<% request.params.slice("state", "order").each do |key, value| %>
  <%= hidden_field_tag key, value %>
<% end %>

【讨论】:

    猜你喜欢
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多