2017-02-09 54 views
0

我有一个类MatriculaForm与一些协会(belongs_to的和的has_many):NoMethodError(未定义的方法 'aluno' 为ActionController的:参数) - aluno_attributes

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

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

而且_form.html.erb

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

在控制器,我做

MatriculaForm.new(params[:matricula]) 

但是initialize改革法提出一个错误:

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

我看到了成为aluno_attributes键名的参数。但是阅读文档,参数名称会被重写。

我做错了什么?

回答

0

您是否尝试将关联属性列入白名单?

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

当方法错误出现可能是关联不正确?您是否正确设置了belongs_tohas_many 这是否仅在验证时发生?表单保存没有验证?我不确定验证是否可以这样完成。可能是你想使用validates_association 请检查文档的正确语法。

+0

属性已经在白名单中,是的,模型保存正确,无需使用重新验证。我没有在控制器'''params.require(:matricula).permit(:id,:aluno_attributes => [:id,:nome等])上找到'''validates_association''' –

+0

的docs ref''' –