使用正确的控制器方法链接搜索

时间:2012-03-13 16:08:38

标签: ruby-on-rails search

我的控制器中有以下内容:

def index
    @games = Game.gamsearch(params[:gamsearch])
end

def consearch
    @games = Game.consearch(params[:consearch])
end

def gensearch
    @games = Game.gensearch(params[:gensearch]) 
end

我认为以下内容:

<div id="sidehead"><h2><%= t('.search') %></h2></div>
<div id="searching" >
        <%= form_tag games_path, :controller => 'games', :action => 'gamsearch', :method => 'get' do %>
        <%= text_field_tag :gamsearch, params[:gamsearch] %>
        <%= submit_tag t('.searchb'), :game_name => nil %>
    <% end %>   
</div>

<div style="clear: both;"/>

<div id="sidehead"><h2><%= t('.search') %></h2></div>
<div id="searching" >
        <%= form_tag games_path, :controller => 'games', :action => 'gensearch', :method => 'get' do %>
        <%= text_field_tag :gensearch, params[:gensearch] %>
        <%= submit_tag t('.searchb'), :game_name => nil %>
    <% end %>   
</div>

<div style="clear: both;"/>

<div id="sidehead"><h2><%= t('.search') %></h2></div>
<div id="searching" >
        <%= form_tag games_path, :controller => 'games', :action => 'consearch', :method => 'get' do %>
        <%= text_field_tag :consearch, params[:consearch] %>
        <%= submit_tag t('.searchb'), :game_name => nil %>
    <% end %>   
</div>

现在第一个搜索工作正常,并查看它与索引中的日志连接的日志。但是后两次搜索没有做任何事情,通过查看日志,他们没有连接到他们相关的con和gensearch。有任何想法吗?是否可以指定控制器中使用哪种方法?

resources :games do
   post 'email', :on => :member
   post 'gensearch', :on => :member
   post 'consearch', :on => :member
end

1 个答案:

答案 0 :(得分:0)

form_tag games_path, :controller => 'games', :action => 'consearch', :method => 'get'

form_tag的第一个参数games_path正在设置网址选项。你的哈希的其余部分被options param吞噬了。

我不确定你的路线是什么样的,但你应该能够以冗长的方式做到这一点。

form_tag( {:controller => 'games', :action => 'consearch'}, {:method => 'get'} )

请注意,您在路线中使用post映射资源,但在表单中使用get。这将导致你的路径助手无法正常工作。