我对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' %>
非常感谢你!
答案 0 :(得分:1)
表单中的NoMethodError显示
未定义的方法`model_name'为nil:NilClass
您正在_form
中呈现forms/show.html.erb
部分内容,因此请确保您已在@form
方法中定义了@customformd
和forms#show
,如下所示
#form_controller.rb
def show
@form = Form.find(params[:id])
@customformd = Customformd.new
end
此外,班级名称应以大写字母开头(即,customformd
应为Customformd
)
class Customformd < ApplicationRecord
belongs_to :form
end