2016-05-19 3 views
0

Ich habe zwei Teiltafeln, die an den gleichen Controller und das gleiche Modell leiten. In beiden Teilen teile ich ein neues Formular ein, das ich mit der create Methode in meinem Controller verwenden möchte. Mein erstes Teil heißt einfach _form.html.haml und es funktioniert ganz gut. Allerdings habe ich meine zweite Teilnummer _case_study_form.html.haml genannt. Mein zweiter Teil ist, wo ich einige Probleme habe. Das Problem, das ich bekomme, ist undefined method 'model_name' for nil:NilClass. Ich glaube, dass ich dieses Problem bekomme, weil mein zweiter Teil einen anderen Namen hat, ich verstehe nicht, warum ich diesen Fehler bekomme, da ich das Gefühl habe, dass ich das Modell korrekt weitergeleitet habe.undefinierte Methode `Modellname 'für Nil: NilClass in einfacher Form mit zwei Teiltönen

ist mein Modell form_submission.rb

Mein erster Stelle genannte Teil, _form.html.haml ich meine erste Linie als

eingerichtet haben
= simple_form_for @form_submission do |f| 

Meine zweite Teil, _case_study_form.html.haml ich Probleme mit meiner ersten Linie habe und haben es eingestellt up als

= simple_form_for @form_submission, url: case_study_path do |f| 

Mein Controller ist

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 

Antwort

1

Sie benötigen @form_submission Objekt initialisiert innerhalb der Methode case_study sowie. Die url, die Sie in dem Formular angeben, stellt die Form Action Controller-Methode übermitteln. Das heißt, sobald Sie das Formular abgeschickt haben, wird es zu dieser URL gehen.

def case_study 
    @form_submission ||= FormSubmission.new 
end 
Verwandte Themen