Итак, у меня есть конкретная форма, которая должна сравнивать два объекта. Один из них является текущей страницей, на которой они находятся, а другой - той, которую мы ищем.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¤t_item=1
Все параметры являются правильными, но он просто не похоже, хотят пойти к правильному действию (все, что я хочу сейчас, это заставить его пойти в действие, чтобы я мог делать то, что мне нужно там).
Любая идея, что я делаю неправильно?
Я не думаю, что вам нужно, прежде чем/compare_search. Также вам нужно добавить 'as: 'compare_search' в конец маршрутизатора, который я верю. – CWitty
Как в стороне, помните, что если вы отправляете форму с GET, вы теряете защиту CSRF, которая имеет встроенные рельсы, плюс вы ограничены максимальной длиной запроса GET. Я бы подумал о том, чтобы сделать это POST. – sockmonk