2011年2月5日土曜日

Rails3でアソシエーションを組んだモデルのフォームの書き方 fields_for

one-to-one has_oneな関係の例

今回はよくあるユーザとユーザの詳細データをテーブル上切り分けた例でやってみます。

class User < ActiveRecord::Base
  has_one :profile
  accepts_nested_attributes_for :profile, :allow_destroy => true
end

class Profile < ActiveRecord::Base
  belongs_to :user
end

# app/views/user/_form.html.erb
<%= form_for :user do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name%>
  <%= f.fields_for :profile do |pf| %>
    <= pf.label :favourite_music %>
    <= pf.text_field :favourite_music %>
  <% end %>
<% end %>

fields_forを使えばOK!

これで動くのだから便利!user_addressでやってみたところどうもうまくいかなかった。もしかしたら、アンダーバーを入れた場合にバグがあるかもしれない。また今度試してみよう...

0 件のコメント: