次の問題を解決するにはどうすればよいですか。
次のようにリンクされているテーブルsubmited_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 %>
現在のゲーム(@game)にリンクされたflickr_id(今のところhttplinkを保持している)で新しいsubmited_pictureを追加したいと考えています。
私はそれを更新するためにいくつかのことを試みてきましたが、それは動揺していないようです:( 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
終わり
動作させることができません。私はあらゆる種類のエラーを受け取っているので、ここでそれらすべてに注意するのではなく、最善の解決策を求めるのが最善だと思いました。
つまり、submited_pictureをゲームの最新ラウンド(最新のcreated_at)に追加したいと思います。