[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]