プログラミング初心者です。
カート機能の実装をしていますが、詳細画面にて個数入力後にカートに追加ボタンを押下したのちcart/showのviewにprotein_idとquantityの情報を持ったparameterを送りたいのですがルーティングエラーが発生します。
paramsをみる限りデータは送られているように感じますが、なぜルーティングエラーが起こっているのか分かりません。ご教示して頂ければ幸いです。
参考記事 https://qiita.com/Coolucky/items/89ce3a0f25c9dfdb38c1
routes.rb resources :carts, only: [:show, :create, :destroy] post '/add_item' => 'carts#add_item' post '/update_item' => 'carts#update_item' delete '/delete_item' => 'carts#delete_item'
cart_items_controller.rb before_action :set_cart_item, only: [:create, :destroy] before_action :set_user before_action :set_cart end def create @cart_item = @cart.cart_items.build(protein_id: params[:protein][:protein_id], quantity: params[:cart_item][:quantity]) if @cart_item.save redirect_to current_cart else redirect_to protein_path end end end def destroy @cart.destroy redirect_to current_cart end private def set_user @user = current_user end def set_cart_item @cart_item = current_cart.cart_items.find_by(protein_id: params[:protein_id]) end def set_cart @cart = current_cart end
application_controller.rb def current_cart if session[:cart_id] current_cart = Cart.find_by(id: session[:cart_id]) session[:cart_id] = current_cart.id current_cart else current_cart = Cart.create(user_id: current_user.id) session[:cart_id] = current_cart.id current_cart = Cart.find_by(id: session[:cart_id]) current_cart end end
protein show.html.erb <%= form_for(CartItem.new, url: cart_path) do |f|%> <%= f.label :quantity, "数量" %> <%= f.select :quantity, [1,2,3,4,5,6,7,8,9,10] %> <%= f.hidden_field :protein_id, value: @protein.id %> <%= f.submit "カートに追加", class: "btn cart_btn" %> <% end %>
回答1件
あなたの回答
tips
プレビュー