rails:3033
From: naopontan <naopontan@g...>
Date: Mon, 2 Mar 2009 16:51:36 +0900
Subject: [rails:3033] 1対多の関係のモデルとビューの扱い方について
初めまして。基本的な部分が身についてない感のある者です。
すみませんが、ご教示願います。
「注文」1つに対し、複数の「注文明細」の関係があります。
◆モデル
# 注文
class Order < ActiveRecord::Base
has_many :order_details, :dependent => :destroy
end
# 注文明細(商品と、その個数)
class OrderDetail < ActiveRecord::Base
belongs_to :order
end
◆ビュー
現状、新規作成(new)の Viewは以下の感じです。
<% form_for(@order) do |f| %>
注文者: <%= f.text_field(:name) -%>
<%# ここで全ての商品名と、その購入数入力のテキストフィールドを出力 %>
商品A: <input name="hoge[商品A]" type="text"> 個
商品B: <input name="hoge[商品B]" type="text"> 個
商品C: <input name="hoge[商品C]" type="text"> 個
<% end %>
◆コントローラ
def create
@order = Order.new(params[:order])
params[:hoge].each do |key, value|
next if value.empty?
@order.order_details << OrderDetail.new(:hoge => key, :count => value)
end
...
質問
ビューやコントローラは、もう少しうまい記述の仕方はありませんか?
添削頂ければ幸いです。
ポイントは、
「入力画面では全商品を表示するが、必要インスタンスは個数の入力された物のみ」
という点です。
商品の個数が入力された OrderDetail だけインスタンスを生成したいので、
このやり方が一般的でしょうか?
--
ML: rails@r...
使い方: http://QuickML.com/