2010-05-20 51 views
0

我正在使用Ruby on rails 2.3.4,我想有一個鏈接,單擊時執行一個動作。鏈接重定向到「顯示」的行動,而不是routes.rb指示

的routes.rb中文件的相關部分看起來是這樣的:

map.search_filter_relevance "/anuncios/buscar", :controller => 'announcements', :action => 'search_filter_relevance' 

我的看法(它是模型的索引頁)看起來是這樣的:

<%= link_to 'M&Aacute;S RELEVANTES', search_filter_relevance_path %> 

我的控制器看起來像這樣:

def search_filter_relevance 
    raise params.inspect 
    unless params[:announcements].nil? or params[:announcements].empty? 
     @announcements = params[:announcements].order_by_featured 

    end 
    end 

的問題是,當我點擊我得到一個錯誤的鏈接由於一些空值顯示操作!我根本沒有訪問該操作...爲什麼執行它?

編輯:

這裏是路輸出:

search_filter_relevance_announcements GET /anuncios/search_filter_relevance(.:format)  {:controller=>"announcements", :action=>"search_filter_relevance"} 
         announcements GET /anuncios(.:format)        {:controller=>"announcements", :action=>"index"} 
             POST /anuncios(.:format)        {:controller=>"announcements", :action=>"create"} 
        new_announcement GET /anuncios/new(.:format)       {:controller=>"announcements", :action=>"new"} 
        edit_announcement GET /anuncios/:id/edit(.:format)      {:controller=>"announcements", :action=>"edit"} 
         announcement GET /anuncios/:id(.:format)       {:controller=>"announcements", :action=>"show"} 
             PUT /anuncios/:id(.:format)       {:controller=>"announcements", :action=>"update"} 
             DELETE /anuncios/:id(.:format)       {:controller=>"announcements", :action=>"destroy"} 
           search  /anuncios/buscar         {:controller=>"announcements", :action=>"search"} 
         power_search  /anuncios/buscar         {:controller=>"announcements", :action=>"power_search"} 
+0

你可以發佈你所得到的錯誤的輸出? – theIV 2010-05-20 17:08:03

+0

它就是這樣。謝謝。 – 2010-05-20 17:13:25

+0

你有沒有其他路線以「/ anuncios」開頭?如果你這樣做,確保「/ anuncios/buscar」被定義爲高於,例如'「/ anuncios /:id」' – Voyta 2010-05-20 17:56:02

回答

1

試試這個代碼在你的routes.rb文件

map.resources :announcements,:collection=>{:search_filter_relevance=>:get} 

而且,註釋下面的一行代碼在你的routes.rb文件

map.search_filter_relevance "/anuncios/buscar", :controller => 'announcements', :action => 'search_filter_relevance' 
+0

如果我在我的視圖中收到錯誤,由於search_filter_relevance_path不再存在。我應該在那裏寫什麼呢? – 2010-05-20 18:21:20

+0

有趣的是,如果我在路線上更改路徑,它會調用我想要的操作,但我不想爲此創建另一個視圖。我只想單擊一個鏈接按鈕並在要調用的動作中對錶格進行排序。我不想去'anuncios/buscar'(搜索網址)以外的其他網址。有任何想法嗎? – 2010-05-20 18:41:37

+0

1)你用rjs做這件事,並在局部的幫助下重新渲染表格,你也可以在搜索視圖中重用部分。 2)你試過了:render => index_search在search_filter_relevance選項中。 – Vamsi 2010-05-20 20:12:46

0

當你進入控制檯和

rake routes 

可以粘貼所有具有search_filter_relevance線以及anuncios?

更新時間: 既然你要撥打的公告的search_filter_relevance行動控制器,你需要使用的上市路線search_filter_relevance_announcements_path

<%= link_to 'M&Aacute;S RELEVANTES', search_filter_relevance_announcements_path %> 

另外一個選項是指定控制器和手動操作

<%= link_to 'M&Aacute;S RELEVANTES', {:controller => "announcements", :action => "search_filter_relevance"} %> 
+0

我編輯了原始問題,包括這個信息。 – 2010-05-20 19:47:09

+0

更新了我的答案的其餘部分。 – Schneems 2010-05-22 17:01:04

+0

這不能解決問題。我猜這是由於路徑文件中的順序,它正在執行「搜索」操作,而不是我想要的操作。我不明白爲什麼。 – 2010-05-24 18:39:39

相關問題