2011-05-09 35 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