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
我正在努力让以下内容发挥作用 - 基本上,按钮提交给 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