Rails形成不会纠正行动

时间:2013-09-16 15:33:12

标签: ruby-on-rails forms

所以我有一个特定的形式,它应该是比较两个对象。一个是他们所在的当前页面,另一个是我们正在搜索的页面。

以下是 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'

它似乎尝试去的网址是:http://localhost:3000/items/1?utf8=%E2%9C%93&q=[ITEM IS HERE]&search_item_id=3&current_item=1

所有参数都是正确的,但它似乎并不想要采取正确的行动(我现在想要的只是让它进入动作,所以我可以在那里做我需要的)。

知道我做错了吗?

2 个答案:

答案 0 :(得分:1)

你有2个表单元素。

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

删除顶行并制作:

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

答案 1 :(得分:0)

我在想你的路线应该是:

get "/compare_search", to: 'items#search_related', as: 'compare_search'