嵌套表单返回未定义的方法`with_indifferent_access'

时间:2012-09-10 22:15:05

标签: ruby-on-rails ruby-on-rails-3

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

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

students_controller.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 %

1 个答案:

答案 0 :(得分: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