2017-02-09 2 views
0

ich eine Klasse haben MatriculaForm mit einigen Verbänden (belongs_to und has_many):NoMethodError (nicht definierte Methode 'aluno' für Action: Parameter) - aluno_attributes

class MatriculaForm < Reform::Form 
    property :aluno, form: PessoaForm 
    properties :atributos_extras, :mensalidade 

    #validation 
    validates :aluno, :dia_vencimento, :empresa, presence: true 
end 

Und die _form.html.erb

<%= form_for @matricula_form do |f| %> 
    <%= f.fields_for :aluno do |aluno| %> 
     <%= aluno.text_field :nome %> 
    <% end %> 
<% end %> 

On-Controller , Mache ich

MatriculaForm.new(params[:matricula]) 

Aber die initialize Reform Verfahren erhöht einen Fehler:

NoMethodError (undefined method `aluno' for #<ActionController::Parameters:0x007fe835772a70>

Ich sah, dass die Parameter mit aluno_attributes Schlüsselnamen werden. Beim Lesen der Dokumente werden diese Parameternamen jedoch akzeptiert.

Ich mache etwas falsch?

Antwort

0

Haben Sie versucht, die Attribute für die Zuordnung auf die weiße Liste zu setzen?

association_attributes: [:id .... etc.] 

Wenn der Methodenfehler angezeigt wird, kann es sein, dass die Zuordnung nicht korrekt ist? Haben Sie die belongs_to und has_many korrekt eingerichtet? Erfolgt dies nur während der Validierung? Wird das Formular ohne Überprüfung gespeichert? Ich bin mir nicht sicher, ob die Validierung so durchgeführt werden kann. Möglicherweise möchten Sie validates_association verwenden Bitte überprüfen Sie die Dokumente für die korrekte Syntax.

+0

Die Attribute sind bereits in der Whitelist und ja, das Modell wird korrekt gespeichert, ohne die Reformvalidierung zu verwenden. Und ich fand keine Dokumentation über "' validates_association'''' –

+0

auf dem Controller '' 'params.require (: matricula) .permit (: id,: aluno_attributes => [: id,: nome, etc])' '' –

Verwandte Themen