1

我有一个学生模型和一个裁判模型。我希望学生填写一份表格,该表格有一个嵌套区域,要求提供信息以联系裁判。我在 rails 3.2.6 中使用 activeadmin 和 formtastic。

我的问题是当我导航到 new_student_path 时,我得到“未定义的方法 `with_indifferent_access'”

学生控制器.rb:

  def new
   @student = Student.new
   @student.referee = Referee.new
  end

学生模型:

class Student < ActiveRecord::Base

has_one :referee
accepts_nested_attributes_for :referee
attr_accessible :firstname, :lastname, :statement
attr_accessible :referee, :referee_attributes
alias_method :referee=, :referee_attributes=

学生的 new.html.erb:

<%= semantic_form_for @student do |f| %>
<%= f.semantic_errors :state %>

 <%= f.inputs do %>
    <%= f.input :firstname %>
    <%= f.input :lastname %>

    <%= f.semantic_fields_for :referee do |ff| %>
        <% if h.object.new_record? %>
        <%= ff.inputs do %>
            <%= ff.input :firstname, :label => "Reference's First Name" %>
            <%= ff.input :lastname, :label => "Reference's Last Name"%>
            <%= ff.input :email, :label => "Reference's Email"%>
        <% end %>
      <% end %>
    <% end %
4

1 回答 1

3

进行了以下修改,现在它可以工作了。

学生模型:

has_one :referee
accepts_nested_attributes_for :referee
attr_accessible :firstname, :lastname, :statement
attr_accessible :referee, :referee_attributes
#alias_method :referee=, :referee_attributes= - removed this line (preventing method from being created)

然后删除了对嵌套表单上未显示的属性的验证,一切正常。

@student.referee.build

仅适用于 has_many 关联。所以不得不使用

@student.referee = Referee.new

或者

@student.build_referee
于 2012-09-11T15:50:23.690 回答