Rails 4: button_to没有提交参数



我正试图让以下工作-基本上,按钮提交到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你不能传递块等):

生成一个包含提交到URL的单个按钮的表单由一组选项创建。

使用

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

…它不会被添加到表单中,因此不会被传递。


如何添加额外的参数到button_to表单?

您需要的是将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

相关内容

  • 没有找到相关文章

最新更新