simple_form 嵌套模型的路径
route for nested model with simple_form
我有一个 Proposal
模型,has_one Quote
。
我正在使用 simple_form 同时创建两个对象。
问题是,我希望引用是另一个引用的克隆,属于另一个模型 Brief
。在我的控制器中,它看起来像这样:
def new
@proposal = Proposal.new
@brief = Brief.find(params[:brief_id])
@proposal.brief = @brief
@invoice_quote_element = @brief.invoice_quote_element.deep_clone include: [ :expense_categories, { expense_categories: :expenses } ]
end
在我看来,我添加了带有
的表格
<%= simple_form_for [@proposal.brief, @proposal, @invoice_quote_element] do |f| %>
但这不起作用,我收到以下错误:
undefined method `brief_proposal_invoice_quote_elements_path'
我觉得我的路线很干净:
resources :proposals do
resources :invoice_quote_element
member do
get 'edit_legal'
patch 'update_legal'
get 'quote'
get 'view_quote'
get 'download_quote'
end
end
现在,如果我从 simple_form
中删除 @invoice_quote_element
<%= simple_form_for [@proposal.brief, @proposal] do |f| %>
表单显示正常,但我无法提交,因为 create
方法引发了一个新错误:
Couldn't find InvoiceQuoteElement with ID=299 for Proposal with ID=
如果您没有在表单中指定 :url
参数,Rails FormHelper
将使用 polymorphic_path
生成表单操作 url。欲了解更多信息,您可以访问 Here。您收到第一个错误是因为未定义路径。当您删除 @invoice_quote_element
时,生成的路径将是 brief_proposals_path
,这可能在您的路由文件中定义,因此它可以工作。但是当你提交表单时,Rails会运行控制器proposals
的方法create
,这可能会导致错误。您应该检查日志以了解调用了哪个控制器和操作。对于您的情况,我认为 <%= simple_form_for [@proposal, @invoice_quote_element] do |f| %>
应该有效。
我有一个 Proposal
模型,has_one Quote
。
我正在使用 simple_form 同时创建两个对象。
问题是,我希望引用是另一个引用的克隆,属于另一个模型 Brief
。在我的控制器中,它看起来像这样:
def new
@proposal = Proposal.new
@brief = Brief.find(params[:brief_id])
@proposal.brief = @brief
@invoice_quote_element = @brief.invoice_quote_element.deep_clone include: [ :expense_categories, { expense_categories: :expenses } ]
end
在我看来,我添加了带有
的表格<%= simple_form_for [@proposal.brief, @proposal, @invoice_quote_element] do |f| %>
但这不起作用,我收到以下错误:
undefined method `brief_proposal_invoice_quote_elements_path'
我觉得我的路线很干净:
resources :proposals do
resources :invoice_quote_element
member do
get 'edit_legal'
patch 'update_legal'
get 'quote'
get 'view_quote'
get 'download_quote'
end
end
现在,如果我从 simple_form
中删除 @invoice_quote_element<%= simple_form_for [@proposal.brief, @proposal] do |f| %>
表单显示正常,但我无法提交,因为 create
方法引发了一个新错误:
Couldn't find InvoiceQuoteElement with ID=299 for Proposal with ID=
如果您没有在表单中指定 :url
参数,Rails FormHelper
将使用 polymorphic_path
生成表单操作 url。欲了解更多信息,您可以访问 Here。您收到第一个错误是因为未定义路径。当您删除 @invoice_quote_element
时,生成的路径将是 brief_proposals_path
,这可能在您的路由文件中定义,因此它可以工作。但是当你提交表单时,Rails会运行控制器proposals
的方法create
,这可能会导致错误。您应该检查日志以了解调用了哪个控制器和操作。对于您的情况,我认为 <%= simple_form_for [@proposal, @invoice_quote_element] do |f| %>
应该有效。