2011-05-09 74 views
0

我想要做一个非常简单的搜索。我在我的控制器中的search动作:在轨道上的红宝石简单搜索

def search 
     @tracker = Tracker.where(params[:search]) 
    end 

而且,在我看来:

<%= form_tag trackers_search_path, :method => 'get' do %> 
    <p> 
    <%= text_field_tag :search, params[:search] %> 
    <%= submit_tag "Search", :name => nil %> 
    </p> 
<% end %> 

但是,它仍然返回零值。这里的日志:

Parameters: {"utf8"=>"✓", "id"=>"search", "search"=>"1Xc9fc0e"} 
    Tracker Load (0.2ms) SELECT "trackers".* FROM "trackers" WHERE ("trackers"."token" = 'search') LIMIT 1 

在我看来,它不是通过正确的param到SELECT语句,但我不知道为什么。

+0

我应该提到我已经尝试过'Tracker.where(:token => params [:search])''。 – Slick23 2011-05-09 22:59:36

回答

2

它看起来像路由可能会搞砸了?你确定search行动实际上被称为?它看起来像是show,编号为search。尝试添加一个debugger调用或一个Rails.logger.debug调用来查看正在调用的操作。或者只是看看整个日志条目。

+0

好电话!这甚至没有发生在我身上,但是有道理。 – thefugal 2011-05-09 23:17:40

+0

是的,这就是我开始弄清楚的。这是我的路线:'match“trackers/search”=>'trackers#index''所以我无法弄清楚它是如何在'resources:trackers'之前尝试放置'show' – Slick23 2011-05-09 23:18:46

+1

,路线匹配自顶向下选择第一场比赛,所以如果它看到'/ trackers/search',它会首先匹配'trackers#show'。 – 2011-05-09 23:20:08