Rails 4: button_to 没有提交参数

Rails 4: button_to not submitting params

我正在努力让以下内容发挥作用 - 基本上,按钮提交给 searches_controller 索引操作并且应该将参数 [:search_task] 传递给它。但由于某种原因,它不起作用。

          <div class="btn-group InterestGroup" role="group" aria-label="">
            <button class = "btn btn-success InterestStatButton"><%= User.tagged_with(interest, :on => :tags, :any => true).count %></button>
            <%= button_to interest, searches_path, :method => :get,  :class => "btn btn-default InterestLabelButton"  %>
            <%= hidden_field_tag :search_task, interest, :id => "search", :class => "form-control" %>
          </div>

在页眉的同一页上,我在页眉中有这个,它是一个输入字段,做同样的事情,并且工作正常。如果您查看每个代码在 HTML 中生成的内容,我不明白的是第一段代码中的隐藏字段与第二段代码中 form_tag 中的输入相同.

          <%= form_tag searches_path, html: {class: "navbar-form navbar-left"}, :method => :get do %>
                <div class="form-group" style="display:inline;">
                  <div class="input-group" style="display:table; width:350px;">
                    <span class="input-group-addon" style="width:1%;"><span class="glyphicon glyphicon-search"></span></span>
                    <%= text_field_tag :search_task, nil, class: "form-control", id: "search", placeholder: "Search for members or content", label: false %>
                  </div>
                </div>
            <% end %>

问题是 button_to 是一个独立的方法(IE 你不能传递一个块等):

Generates a form containing a single button that submits to the URL created by the set of options.

当您使用时:

<%= button_to interest, searches_path, :method => :get,  :class => "btn btn-default InterestLabelButton"  %>
<%= hidden_field_tag :search_task, interest, :id => "search", :class => "form-control" %>

...它根本不会添加到表单中,因此不会通过。


How to add additional params to a button_to form?

您需要将 search_task 参数添加到您的 button_to 助手:

<%= button_to interest, searches_path, method: :get, class: "btn btn-default InterestLabelButton", params: { search_task: interest }  %>

button_to 表单默认发送一个POST 请求。这将屏蔽传递的参数;如果你想使用 GET,你已经做了正确的事情并声明了它。一个重要的注意事项是 GET 请求将参数附加到请求 URL.

您可以在此处阅读更多相关信息:http://www.w3schools.com/tags/ref_httpmethods.asp