アジャイル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: <%= render 'size_select' %>
color: <%= render 'color_select' %>
gender: <%= 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
終了
「カートに追加」をクリックすると、カートに正常に追加されたが、シャツに関する情報にアクセスすることはできません。それは無用だと言います。
助けていただけたら幸いです!
メモ: 'Model.where(...)'は結果オブジェクトの配列ではなく、 '.id'を呼び出すことはできません。おそらく、 'Tshirt.where(" size =?AND gender =?AND color =? "、params [:size]、params [:gender]、params [:color])を最初に' ' – MrTheWalrus
'私はそれがそれのような単純なものになるのを知っている!ありがとう! – thatdankent
私はそれを回答として再送信すると思います。 :) – MrTheWalrus