Rails 3.1+嵌套表单模型无法正确呈现

时间:2012-04-12 21:26:16

标签: ruby-on-rails ruby-on-rails-3.1 nested-forms ruby-on-rails-3.2 simple-form

我有一个篮球应用程序,其中名册上有很多玩家,而玩家属于名册。

Roster.rb

class Roster < ActiveRecord::Base
  has_many :players
  accepts_nested_attributes_for :players
  attr_accessible :class_year, :jersey_number, :player_id, :team_id
end

Player.rb

class Player < ActiveRecord::Base
  has_many :gamelogs
  belongs_to :rosters
  validates_presence_of :first_name, :last_name
  attr_accessible :first_name, :last_name, :active
end

我的观点只是渲染表单的第一部分,而不是嵌套的

<div class="well">
    <h2>New Player</h2>
    <%= simple_form_for @new_player, :html => { :class => 'form-horizontal' } do |f| %>
        <%=f.simple_fields_for :players do |x|%>
            <%= x.input :first_name %>
            <%= x.input :last_name %>
        <%end%>
        <%=f.input :class_year %>       
        <%=f.input :jersey_number %>
        <%=f.input :team_id, :as => :hidden, :input_html => {:value => params[:id]}%>

        <div class="well">
        <%= f.button :submit, :class => 'btn-primary icon-plus-sign btn-success', :value => "Add To Team" %>
        </div>
    <%end%>
</div>

它的图像不起作用:

http://i.stack.imgur.com/Uoirp.png

我正在使用Simple_Form 2.0和Twitter Boot Strap。有没有我没看到的东西?我觉得这应该很简单,但我似乎无法弄清楚它为什么不渲染。提前谢谢。

1 个答案:

答案 0 :(得分:2)

你需要在fields_for块上使用等号:

<%= f.simple_fields_for :players do |x| %>

编辑:

所有这一切都假设为@new_player == Roster.new

我必须使用Formtastic执行此操作,因此它可能与Simple Form类似。

查看源代码,它为您提供了将嵌套对象传递给嵌套表单的选项:

def simple_fields_for(record_name, record_object = nil, options = {}, &block)

所以尝试做这样的事情:

<%= f.simple_fields_for :players, @new_player.players.build do |x| %>