2012-02-15 3 views
0

私のカートの次のコードは、各アイテムのループをスキップし、合計を出力して、カート全体の合計を正しく示しています。Ruby on Railsの更新カートのフォームがループをスキップするのはなぜですか?

これはなぜですか?エラーはありません。 私はRails 3.1.0とRuby 1.9.2を使用しています。

<% if notice %> 
<p id="notice"><%= notice %></p> 
<% end %> 

<div class="cart_title">Your Cart</div> 
<table> 
    <% for item in @cart.line_items %> 
    <% form_for item do |f| %> 
     <tr> 
     <td> 
      <%= f.submit value: 'Update Qty' %> 
      <%= f.text_field :quantity, size: 1 %>&times; 
     </td> 
     <td class="item_price"><%= number_to_currency(item.total_price) %></td> 
     </tr> 
    <% end %> 
    <% end %> 
    <tr class="total_line"> 
    <td colspan="2">Total</td> 
    <td class="total_cell"><%= number_to_currency(@cart.total_price) %></td> 
    </tr> 
</table> 

<%= button_to 'Empty cart', @cart, method: :delete, 
    confirm: 'Are you sure?' %> 

Development.logはそれに2つの製品(それぞれの数量1)でのカートのためにこの活動を示しています

Started GET "/carts/7" for 127.0.0.1 at 2012-02-15 16:23:43 +0000 
    Processing by CartsController#show as HTML 
    Parameters: {"id"=>"7"} 
    Cart Load (0.1ms) SELECT "carts".* FROM "carts" WHERE "carts"."id" = ? LIMIT 1 [["id", "7"]] 
    LineItem Load (0.1ms) [1mSELECT "line_items".* FROM "line_items" WHERE "line_items"."cart_id" = 7 
    Product Load (0.1ms) SELECT "products".* FROM "products" WHERE "products"."id" = 10 LIMIT 1 
    Product Load (0.1ms) [1mSELECT "products".* FROM "products" WHERE "products"."id" = 11 LIMIT 1 
Rendered carts/show.html.erb within layouts/application (41.4ms) 
Completed 200 OK in 48ms (Views: 46.5ms | ActiveRecord: 0.9ms) 

答えて

2

あなたが好きなのform_forのため<%=を使用する必要があります。

<%= form_for item do |f| %> 

ループ内に行が表示されない原因になっている可能性があります。

+0

絶対に正しく!教科書のエラー - 全く見えませんでした。ありがとう – Jonathan

+0

私は助けることができてうれしい。あなたが気にしないなら、これを正解としてマークしてください。ありがとう。 –

+0

当然のことながら、答えを書いたときに私はそれを最良の答えとして選ぶことができました〜その後、私は外出しました:) - 心配しないでください;)これを見つけていただきありがとうございます。よろしく – Jonathan

関連する問題