2016-04-25 83 views
1

下面的代碼很適合在「發票」視圖中創建新的事務。但是,它在管理員名稱空間中不起作用。即/管理/發票/ 1 /但/發票/ 1/具有管理員名稱空間的Rails表單生成器

show.html.erb

<%= form_for([@invoice, @invoice.transactions.build]) do |form| %> 
.... 
transactions form input 

的routes.rb工作在

resources :invoices do 
    resources :transactions 
end 
+0

渲染視圖中form的'action'屬性的值是多少? – Uzbekjon

+0

/invoices/1/transactions –

回答

0

當調用像一個命名空間的路線form_for/admin/invoices/1/,Rails會自動追加admin到您的路線。換句話說,form_for([@invoice, @invoice.transactions.build])將張貼到像/admin/invoice/:id/transactions/這樣的路線而不是/invoice/:id/transactions/

要修正,明確設置形式的網址,並使用路由輔助方法來推斷正確路線:

form_for(@invoice, url: invoice_transaction_url(@invoice.id)) 

注意,你可能需要用正確的路線,以取代invoice_transaction_url。使用rake routes查找與所需的控制器POST操作對應的幫助程序方法。

+0

感謝您的快速反饋。我的動作網址是 /發票/ 1 /交易 它似乎沒有被追加。我不確定是否這是正確的,提交後我得到「未初始化的常數TransactionsController」錯誤,我最終在/發票/ 1 /交易而不是 管理員/ invoices/1 /交易 –

+0

什麼行給你的「」未初始化的常量TransactionsController「',它是'form_for'嗎?您的事務控制器是否在命名空間中定義? –

+0

是它在一個名字空間中定義的。 資源:發票做 資源:交易 結束 命名空間:管理員做 資源:交易 結束 該錯誤是在URL發生(/發票/ 1 /交易),沒有因爲發票和交易定義的路由是隻能在管理員中訪問。 –