Rails表单生成器与管理员命名空间

时间:2016-04-25 18:49:53

标签: ruby-on-rails form-for formbuilder

以下代码适用于在Invoice show视图中创建新交易。但是在admin命名空间中它不起作用。即/ admin / invoices / 1 /但适用于/发票/ 1 /

show.html.erb

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

的routes.rb

resources :invoices do
  resources :transactions
end

1 个答案:

答案 0 :(得分:0)

form_for等命名空间路由中调用/admin/invoices/1/时,Rails会自动将admin附加到您的路由中。换句话说,form_for([@invoice, @invoice.transactions.build])会张贴到/admin/invoice/:id/transactions/而非/invoice/:id/transactions/的路线。

要修复,请显式设置表单的URL并使用路由帮助程序方法来推断正确的路由:

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

请注意,您可能需要使用正确的路线替换invoice_transaction_url。使用rake routes查找与所需控制器POST操作对应的辅助方法。