我有两个部分路由到同一个控制器和相同的模型。在这两个部分中,我提交了一个新表单,我打算在我的控制器中使用create
方法。我的第一部分简称为_form.html.haml
,效果很好。然而,我的第二个部分我打电话给_case_study_form.html.haml
。我的第二个部分是我遇到一些问题。我得到的问题是undefined method 'model_name' for nil:NilClass
。我相信我得到了这个问题,因为我的第二个部分有一个不同的名字,我不明白为什么我得到这个错误,因为我觉得我已经正确地路由了模型。
我的模型名为form_submission.rb
我的第一部分,_form.html.haml
我的第一行设置为
= simple_form_for @form_submission do |f|
我的第二部分,_case_study_form.html.haml
我的第一行遇到麻烦并将其设置为
= simple_form_for @form_submission, url: case_study_path do |f|
我的控制器是
class FormSubmissionsController < ApplicationController
invisible_captcha only: [:create, :case_study], on_spam: :handle_spam
def new
@form_submission ||= FormSubmission.new
end
def create
@form_submission = FormSubmission.new(form_submission_params)
if @form_submission.save
redirect_to thank_you_path
else
render :new
end
end
def case_study
end
private
def handle_spam
redirect_to root_path
end
# Only allow a trusted parameter "white list" through.
def form_submission_params
params.require(:form_submission).permit(:first_name, :last_name, :organization, :email, :phone, :recognition, :inquiry, :form_submission)
end
end
答案 0 :(得分:1)
您还需要在方法@form_submission
内初始化case_study
个对象。您在表单中提到的url
表示表单提交操作控制器方法。即,一旦您提交表单,它将转到该URL。
def case_study
@form_submission ||= FormSubmission.new
end