2012-05-17 192 views
0

我有一些很奇怪的軌道的行爲:奇怪的路由錯誤

的routes.rb中:

resources :transactions, except: :show 

耙路線的相關輸出:

 transactions GET /transactions(.:format)     transactions#index 
        POST /transactions(.:format)     transactions#create 
    new_transaction GET /transactions/new(.:format)    transactions#new 
    edit_transaction GET /transactions/:id/edit(.:format)   transactions#edit 
     transaction PUT /transactions/:id(.:format)    transactions#update 
        DELETE /transactions/:id(.:format)    transactions#destroy 

的代碼在視圖中:

<% if (current_page?(new_transaction_path) || current_page?(edit_transaction_path)) %> 
    # Do something in here 
<% end %> 

錯誤:

Completed 500 Internal Server Error in 20ms 

ActionController::RoutingError (No route matches {:action=>"edit", :controller=>"transactions"}): 

它的工作原理,當我刪除|| current_page?(edit_transaction_path)部分。

我有什麼問題嗎?或者這是一個錯誤?

+0

嘗試將事務對象傳遞給edit_transaction_path:'edit_transaction_path(@transaction)' – melekes

+0

但我並不總是有一個事務對象......有沒有更一般的方法?我只是想檢查我是否編輯任何交易對象... – klump

+0

'current_page?(:action =>「edit」,:controller =>「transactions」)'似乎工作。 @antonk:你想發佈一個答案嗎?我會接受它,你給了我這個ID缺失的想法。 – klump

回答

2

嘗試交易對象傳遞給edit_transaction_path:edit_transaction_path(@transaction)

current_page?(:action => "edit", :controller => "transactions") - 是的,這是最好的方式,我相信。