1

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

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

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

知道我做错了什么吗?

4

2 回答 2

1

你有 2 个表单元素。

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

删除第一行并使其成为:

  = form_tag compare_search_path, method: 'get', class: "form-inline" do
于 2013-09-16T15:43:20.643 回答
0

我想你的路线应该是:

get "/compare_search", to: 'items#search_related', as: 'compare_search'
于 2013-09-16T15:44:25.033 回答