2015-06-11 83 views
-1

我有一個控制器文件,紅寶石上rails-不存在的路線

abc_controller.rb. 

我已經定義它裏面的顯示方法。

我有一個視圖文件,

show.html.haml 

內部應用程序/視圖/ ABC/

在我的routes.rb文件,我給下面的命令

resources :abc 

我有一個按鈕

= link_to 'abc', abc_path, class: 'btn btn-default' 

但是當我點擊按鈕時,它不會進入新頁面。

我得到不存在的路由錯誤。 因爲我是一個新手入門,我無法確定問題是什麼。

+0

是的,錯誤是正確的,確實沒有這樣的路線。 –

+0

你能告訴我我該如何糾正它? – Clint

+0

運行'rake routes'來查看所有可用的路由前綴。 –

回答

0

得到一個錯誤的原因是abc_path沒有這樣的路徑。運行rake routes,你會看到Rails的理解。在你例子中的路線,resources :abc產生以下路線。

abc_index GET  /abc(.:format)   abc#index 
      POST  /abc(.:format)   abc#create 
    new_abc GET  /abc/new(.:format)  abc#new 
edit_abc GET  /abc/:id/edit(.:format) abc#edit 
     abc GET  /abc/:id(.:format)  abc#show 
      PATCH /abc/:id(.:format)  abc#update 
      PUT  /abc/:id(.:format)  abc#update 
      DELETE /abc/:id(.:format)  abc#destroy 

第一列中指定的路線。因此,爲了達到abc_controllerindex行動,該路線被命名爲abc_index_path。有一個abc_path但它需要一個id params,這意味着你需要傳遞一些東西給它。在你的情況下,沒有明確的價值傳遞給此方法,因爲試用只需使用abc_path(1),它會將您重定向到/abc/1。這與params[:id]設置爲1的演出行動有關。

0

如果你這樣做resources(複數)得到的顯示路由需要一個ID:/abc/:id(.:format),所以abc_path要求你傳遞:id或一個對象。如果您使用的是單數abc(resource :abc),則生成的路徑不需要:id,因此您的代碼應該可以正常工作(這種情況不太常見,但很難用「abc」示例來說明)