如何解决以下问题:
我想在表submit_pictures中添加一个新行,链接如下:
game.rb
has_many :rounds
has_many :participants, :dependent => :destroy
has_many :submitted_pictures, :through => :rounds
has_many :users, :through => :participants
accepts_nested_attributes_for :participants
accepts_nested_attributes_for :rounds, :reject_if => :all_blank
round.rb
belongs_to :game
has_many :submitted_pictures, :dependent => :destroy
accepts_nested_attributes_for :submitted_pictures
submitted_picture.rb
has_one :round
has_one :game, :through => :rounds
belongs_to :user
所以我可以打电话:
<% @user.games.rounds.last.submitted_pictures.each do |blabla| %><% end>
我使用以下方法制作了一个复杂的表格:
<%= form_for(@game) do |f| %>
<%= f.fields_for :round do |ff| %>
<%= ff.fields_for :submitted_pictures do |fff| %>
<%= fff.label :flickr_id %>
<%= fff.text_field :flickr_id %>
<% end %>
<% end %>
<%= f.submit "Submit Picture", class: "btn btn-primary" %>
<% end %>
希望添加一个带有 flickr_id 的新 submit_picture(它现在拥有一个 httplink),链接到当前游戏(@game)。
我一直在尝试几件事来更新它,但它似乎没有让步:(我现在看到的update_attributes完全错误:p)
def update
@game = Game.find(params[:id])
if @game.rounds.last.submitted_pictures.update_attributes(params[:id])
flash[:success] = "Pic Submitted!"
else
render :action => 'new'
end
end
还
def update
@game = Game.find(params[:id])
if @game.save
flash[:success] = "Pic Submitted!"
redirect_to games_path
else
render :action => 'new'
end
结尾
我无法让它工作。我遇到了各种各样的错误,所以我认为最好寻求最佳解决方案,而不是在这里全部记录下来。
所以简而言之,我想在游戏的最新一轮(最近创建的_at)中添加一个提交的图片。