2013-09-16 2 views
1

Итак, у меня есть конкретная форма, которая должна сравнивать два объекта. Один из них является текущей страницей, на которой они находятся, а другой - той, которую мы ищем.Rails form не собирается исправлять действие

Вот форма в show.html.haml:

%form.form-inline 
    = form_tag compare_search_path, method: 'get' do 
    = text_field_tag :q, params[:q], class: "typeahead", "data-provide" => "typeahead", autocomplete: "off" 
    = hidden_field_tag :search_item_id, '', class: "search_item_id" 
    = hidden_field_tag :current_item, @item.id 
    = submit_tag "Search", name: nil, class: "btn" 

Внутри моего контроллера, у меня есть:

def search_related 
    puts "*" * 100 
    puts "It's in here and working." 
end 

Однако, он никогда не проникая внутрь метода, он просто пытается выполнить поиск, и метод никогда не используется.

Мой routes.rb имеет:

get "/compare_search" => 'items#search_related' 

URL-адрес, который, кажется, чтобы попытаться пойти в это: http://localhost:3000/items/1?utf8=%E2%9C%93&q=[ITEM IS HERE]&search_item_id=3&current_item=1

Все параметры являются правильными, но он просто не похоже, хотят пойти к правильному действию (все, что я хочу сейчас, это заставить его пойти в действие, чтобы я мог делать то, что мне нужно там).

Любая идея, что я делаю неправильно?

+0

Я не думаю, что вам нужно, прежде чем/compare_search. Также вам нужно добавить 'as: 'compare_search' в конец маршрутизатора, который я верю. – CWitty

+0

Как в стороне, помните, что если вы отправляете форму с GET, вы теряете защиту CSRF, которая имеет встроенные рельсы, плюс вы ограничены максимальной длиной запроса GET. Я бы подумал о том, чтобы сделать это POST. – sockmonk

ответ

1

У вас есть 2 элемента формы.

%form.form-inline 
    = form_tag compare_search_path, method: 'get' do 

Снимите верхнюю линию и сделать это:

= form_tag compare_search_path, method: 'get', class: "form-inline" do 
0

Я думаю, ваш маршрут должен быть:

get "/compare_search", to: 'items#search_related', as: 'compare_search' 
Смежные вопросы