0

これは、カート内の数量の更新に関する別の投稿です。私が見つけたものはどれも時代遅れのようだったので、これが繰り返されているように思われる場合はお詫び申し上げます。

しかし、私はアジャイルWeb開発とRailsの第4版の本をフォローしています。彼らは親切にも、量の編集を「課題」として残し、答えを示さないようにしました:D。今、私はそれを機能させようとしているので、私は問題を抱えています。

私のviews/cart/show.html.erbに表示する次の表があります

<table>
    <tr>
        <th>Quantity</th>
        <th>Product Name</th>
        <th>Size</th>
        <th>Price</th>
    </tr>
<% @cart.line_items.each do |item| %>
    <tr>
        <td>
            <%= form_for 'item', :url => {:controller => 'line_items', :action => 'update', id: item} do |f| %>
                <div class="field">
                    <%= f.number_field :qty, :value => item.qty %>
                    <%= submit_tag "Update" %>
                </div>
            <% end %>
        </td>
        <td><%= item.product.name %></td>
        <td><%= item.size %></td>
        <td><%= number_to_currency(item.total_price) %></td>
    </tr>
<% end %>
    <tr>
        <td colspan="3">Total Price</td>
        <td><%= number_to_currency(@cart.total_price) %></td>
    </tr>
</table>

しかし、[更新]をクリックすると、どちらかが表示されます

不明なアクション

LineItemsControllerのアクション「29」が見つかりませんでした

また

不明なアクション

LineItemsControllerのアクション「35」が見つかりませんでした

idフィールドを完全に削除しても。コントローラー側で更新機能を処理し、適切に更新することができます-自分でそれを理解したいのですが、これらの数値アクションを生成している可能性があるものと、それを修正する方法を理解できません。要するに、このエラーの原因は何ですか?どうすれば修正できますか?カートビューにline_itemフォームがあるという事実に関連している可能性がありますか?

4

2 に答える 2

1

29と35がuridか何か他のものであるかを確認しますか?データベースでLineItemsを確認してみてください。また、コントローラーはどのように見えますか?と

<%= form_for 'item', :url => {:controller => 'line_items', :action => 'update', id: item} do |f| %>

あなたはそれをajaxの方法で更新しようとしていますか?数量を更新するとき、それが間違っていない場合はajaxを使用する必要があります(本はそのように正しく行うように求められていますか?)

于 2013-01-20T01:47:30.170 に答える
1

だから私はそれを機能させました-私がしたことは、フォームヘッダーをそのように微調整したことでした

  <%= form_for :item, :url => line_items_update_path(id: item.id) do |f| %>

次の行をroutes.rbに追加しました

  get "line_items/update"

そして、私のline_items_controllerに1行追加しました

  def update
    @line_item = LineItem.find(params[:id])
    @line_item.qty = params[:item][:qty] #added this line here

お悩みの方へ!

于 2013-01-20T02:35:16.283 に答える