2015-10-05 2 views
1

Я пытаюсь получить следующее, чтобы работать - В принципе, кнопка подчиняется действию индекса search_controller и ДОЛЖНА передать ему параметры [: search_task]. Но по какой-то причине он не работает.Rails 4: button_to не отправляет параметры

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

ответ

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

... он просто не будет добавлен в форму, следовательно, не будет принят.


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

+1

Perfect. 1 edit ...... <% = button_to interest, search_path, method:: get, class: "btn btn-default InterestLabelButton", params: {search_task: interest}%> – GhostRider

+0

Спасибо - внесли изменения в код –