嵌套属性没有出现在简单的形式向上(Nested attributes not showing up

2019-09-17 03:13发布

考虑以下几点:

楷模

class Location < ActiveRecord::Base
  has_many :games
end

class Game < ActiveRecord::Base
  validates_presence_of :sport_type

  has_one :location
  accepts_nested_attributes_for :location
end

调节器

  def new
    @game = Game.new
  end

查看(表)

<%= simple_form_for @game do |f| %>
  <%= f.input :sport_type %>
  <%= f.input :description %>
  <%= f.simple_fields_for :location do |location_form| %>
    <%= location_form.input :city %>
  <% end %>
  <%= f.button :submit %>
<% end %>

为什么位置字段(市)都没有出现在形式? 我没有得到任何错误。 我在想什么?

Answer 1:

好吧,我不知道如果你正在寻找接现有位置与名利相关联,或者如果您希望为每个游戏一个新的位置。

假设它是第一种方案:

让游戏属于一个位置更改游戏模型的关联。

class Game < ActiveRecord::Base
  validates_presence_of :sport_type

  belongs_to :location
  accepts_nested_attributes_for :location
end

您可能需要通过迁移LOCATION_ID字段添加到您的游戏模式。

然后,而不是一个嵌套的表格,你只是要有所改变的博弈模型本身的位置字段。

如果是第二种情况下,你要建立每场比赛,那么你将需要改变你的模型如下新的位置:

class Location < ActiveRecord::Base
  belongs_to :game
end

class Game < ActiveRecord::Base
   validates_presence_of :sport_type

  has_one :location
  accepts_nested_attributes_for :location
end

您将需要一个game_id字段添加到位置的模型,如果你不已经有一个。

然后在你的控制器,你需要为了得到嵌套表格字段显示建一个位置:

def new
 @game = Game.new
 @location = @game.build_location 
end


文章来源: Nested attributes not showing up in simple form