一分一秒真剣勝負!

Ruby, Railsなど。Web系の技術ネタを充実させたい・・が、そうなるかは分からない。

fields_forで1対多の関係にあるモデルの内容を表示する

追記

 このコード古いです。最近のRailsを使っているならhttp://api.rubyonrails.org/でfields_forを調べてください。英語だけどサンプルコードが豊富にあります。

 fields_forでググると、モデルが1対1の関係のサンプルばかりがヒットする。1対多の場合はどう書けばいいんだ?とモヤモヤしていたのだが、以下のように書けばいいことが分かった。

<% form_for(@user) do |f| %>
 <%= f.error_messages %>
 <%= f.label :name%>
 <%= f.text_field :name %>
  <% @user.articles.each do |article| %>
   <% fields_for "user[article][]", article do |at| %>
    <%= at.text_field :body %>
   <% end %>
  <% end %>
 <%= f.submit "Update" %>
<% end %>

 "user[article][]"と書くことでArrayを取れるんですね。