2011-12-06 6 views
0

アジャイルWeb開発第4版に基づいてショッピングカートを構築しようとしています。ショッピングカートは、Tシャツを販売するためのものです。 Tシャツには、さまざまなサイズオプション、カラーオプション、ジェンダーオプションがあります。ユーザーがリストからオプションを選択して[カートに追加]をクリックし、一致するTシャツをカートに追加する(line_itemの形式で)ことができるようにします。モデルオブジェクト(Tシャツ)を動的に選択し、カートに追加します(line_itemを作成して)

私はこれを行うことに近いと思います。しかし、それほどではない。ここに関連するコードスニペットは、次のとおり

フォーム(/_store.html.erb):

<div id="storefunctions"> 
<%= form_tag '/line_items/create', :id => "tshirt" do %> 
<div> 
    size:&nbsp;<%= render 'size_select' %>&nbsp; 
    color:&nbsp;<%= render 'color_select' %>&nbsp; 
    gender:&nbsp;<%= render 'gender_select' %> 
    <%= hidden_field_tag(:message_content, @message.content) %></div 
<div> <%= submit_tag 'add to cart' %></div> 
<% end %> 

Line_itemsコントローラ(/line_items/create.rb)

def create 
@cart  = current_cart 
tshirt  = Tshirt.where("size = ? AND gender = ? AND color = ?", params[:size], params[:gender], params[:color]) 
@line_item = @cart.line_items.build(:tshirt_id => tshirt.id) 

respond_to do |format| 
    if @line_item.save 
    format.html { redirect_to(@line_item.cart, :notice => 'Line item was successfully created.') } 
    format.xml { render :xml => @line_item, :status => :created, :location => @line_item } 
    else 
    format.html { render :action => "new" } 
    format.xml { render :xml => @line_item.errors, :status => :unprocessable_entity } 
    end 
end 

終了

「カートに追加」をクリックすると、カートに正常に追加されたが、シャツに関する情報にアクセスすることはできません。それは無用だと言います。

助けていただけたら幸いです!

+1

メモ: 'Model.where(...)'は結果オブジェクトの配列ではなく、 '.id'を呼び出すことはできません。おそらく、 'Tshirt.where(" size =?AND gender =?AND color =? "、params [:size]、params [:gender]、params [:color])を最初に' ' – MrTheWalrus

+0

'私はそれがそれのような単純なものになるのを知っている!ありがとう! – thatdankent

+0

私はそれを回答として再送信すると思います。 :) – MrTheWalrus

答えて

0

Model.where(...)は、結果オブジェクトの配列ではなく結果の配列になるため、.idを呼び出すことはできません。おそらく必要ですTshirt.where("size = ? AND gender = ? AND color = ?", params[:size], params[:gender], params[:color]).first

関連する問題