2010-07-11 69 views
1

我想鏈接到條目控制器中的動作addData。我已經構建的鏈接是這樣的:RoR:我在做一個簡單的動作鏈接時遇到了問題

<%= link_to image_tag (w.link, :border =>0) ,:controller => :entries, :action => :addData %> 

但是當我點擊該鏈接時,我得到這個錯誤:

Couldn't find Entry with ID=addData 

我敢肯定這是因爲我有一個寧靜的設計。有沒有解決這個問題的方法?謝謝閱讀。

+0

作爲一個說明,您應該解決您的空間'A(B,C )'可能會引起一些抱怨,使用'ab,c'或'a(b,c)'而不是兩個! – 2010-07-11 17:45:35

+0

非常感謝您的幫助! – ben 2010-07-12 01:01:37

回答

1

Rails已經完全遷移到RESTful設計。這意味着要使用非標準操作,您必須將它們添加到您的資源config/routes.rb

如果他們在所有資源上操作,將它們添加到散列表:collection => {:addData => :post} 如果您有一個資源使用ID爲:member的單個資源。 給你一些它。

map.resources :entries, :collection => {:addData => :post} 

要使用映射的任何行動,任何控制器的老風格,你可以將以下兩行添加到您的config/routes.rb

map.connect ':controller/:action/:id.:format' 
    map.connect ':controller/:action/:id' 
1

您是否已經正確定義了此操作addData的路徑? 順便試試這個:

<%= link_to image_tag (w.link, :border =>0) ,{:controller => :entries, :action => :addData} %> 
+0

啊我不知道我必須定義一條路線。所以我不能沒有定義路線就這樣鏈接? – ben 2010-07-11 14:20:30

+0

路由基本上不過是URL的相對部分映射到的正則表達式。映射從路由文件的頂部開始。因此,如果遇到任何可以映射此URL的正則表達式,它將以該格式處理它。所以,map.resources部分應該在頂部,而map.connect部分(默認格式)應該在下面。如果它沒有找到任何指定的url路由,它會嘗試將其映射到默認格式(即map.connect部分)。希望解釋有幫助。 – 2010-07-12 19:33:48