0

我有一堂课MatriculaForm有一些关联(belongs_to 和 has_many):

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键名。但是阅读文档,这些参数名称被接受。

我做错了什么?

4

1 回答 1

0

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

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

当出现方法错误时,可能是关联不正确?您是否正确设置了belongs_to并且has_many 这仅在验证时发生?表单是否在没有验证的情况下保存?我不确定是否可以通过这种方式进行验证。可能您想使用validates_association 请检查文档以获取正确的语法。

于 2017-02-09T16:40:35.270 回答