1

我试图让以下工作 - 基本上,按钮提交给 searchs_controller 索引操作,并且应该将 params[: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 %>
4

1 回答 1

1

问题是这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

于 2015-10-05T08:41:28.943 回答