simple_form中的嵌套表单

时间:2017-08-17 06:28:44

标签: ruby-on-rails ruby forms

我对RoR很新,我尝试使用simple_form创建嵌套表单,但我一直看到这个错误:

  

表单中的NoMethodError显示

     

未定义的方法`model_name'为零:NilClass

我已经看过这些链接,但无济于事。我还考虑过是否有任何拼写错误,或者是否使用了单数/复数。

这是我的_form.html.erb代码,错误似乎来自第一行:

<%= simple_form_for([@form, @customformd]) do |f| %>
  <%= f.input :legislation, label: 'Which Act?' %>
  <%= f.input :provision, label: 'Which provision?', collection: [ "Act A", "Act B", "Act C" ] %>
  <%= f.input :RB, label: 'Referring Body', collection: [ "A", "B", "C", "D", "E", "F"] %>
  <%= f.button :submit %>
<% end %>

这是我的customformd.rb代码:

class customformd < ApplicationRecord
  belongs_to :form
end

这是我的customformds_controller代码:

class CustomformdsController < ApplicationController
  def create
    @form = Form.find(params[:form_id])
    @cformftcd = @form.customformds.create(customformds_params)
    redirect_to form_path(@form)
  end

  private
  def customformd_params
    params.require(:customformd).permit(:RB, :legislation, :provision)
  end
end

以下是show.html.erb代码违规部分的摘要:

<%= render @form.customformd %>
<h5>Add Custom Form D Specific Info:</h5>
<%= render 'customformds/form' %>

非常感谢你!

1 个答案:

答案 0 :(得分:1)

  

表单中的NoMethodError显示

     

未定义的方法`model_name'为nil:NilClass

您正在_form中呈现forms/show.html.erb部分内容,因此请确保您已在@form方法中定义了@customformdforms#show,如下所示

#form_controller.rb
def show
  @form = Form.find(params[:id])
  @customformd = Customformd.new
end

此外,班级名称应以大写字母开头(即,customformd应为Customformd

class Customformd < ApplicationRecord
  belongs_to :form
end