🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2133閲覧

商品をカートに追加するときにエラーが出る Railsでネットショップ

ryota1017stars

総合スコア21

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/10/05 11:53

Rialsでネットショップを開発しております。

商品をカートに追加する処理のところでエラーが出てしまい、解決できないため投稿致しました。

具体的には商品ページに設置しているカートに追加するボタンを押すと、Routing Errorが出てしまいます。
正常に商品をカートに追加するためにはどうすればよいでしょうか。

以下コードになります。

ruby

1class CartsController < ApplicationController 2 before_action :setup_cart_item, only: [:add_item] 3 4 5def add_item 6 if @cart_item.blank? 7 @cart_item = current_cart.cart_items.build(product_id: params[:product_id]) 8 end 9 10 @cart_item.quantity += params[:quantity].to_i 11 @cart_item.save 12 redirect_to current_cart 13end 14 15private 16 17 def setup_cart_item 18 @cart_item = current_cart.cart_items.find_by(product_id: params[:product_id]) 19 end

ruby

1class ApplicationController < ActionController::Base 2 3include SessionsHelper 4 5def current_cart 6 if session[:cart_id] 7 @cart = Cart.find(session[:cart_id]) 8 else 9 @cart = Cart.create 10 session[:cart_id] = @cart.id 11 end 12end

ruby

1Rails.application.routes.draw do 2 3 get 'carts/show' 4 get 'carts/add_item' 5 get 'carts/update_item' 6 get 'carts/delete_item' 7 get 'carts/setup_cart_item' 8 9 get 'products/index' 10 get 'products/new' 11 12 get 'sessions/new' 13 14 resources :users 15 get 'users/new' 16 17 root 'static_pages#home' 18 19 20 get '/help', to: 'static_pages#help' 21 get '/about', to: 'static_pages#about' 22 get '/contact', to: 'static_pages#contact' 23 get '/signup', to: 'users#new' 24 post '/signup', to: 'users#create' 25 26 get '/login', to: 'sessions#new' 27 post '/login', to: 'sessions#create' 28 delete '/logout', to: 'sessions#destroy' 29 30 resources :products 31 resources :carts 32 33 post '/add_item' => 'carts#add_item' 34 post '/update_item' => 'carts#update_item' 35 delete '/delete_item' => 'carts#delete_item' 36 37 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 38end 39

erb

1<h1><%= @product.name%></h1> 2<%= @product.price %> 3 4<%= button_to 'Add to cart', add_item_path(product_id: @product.id) %> 5

こちらは商品ページに表示しているカートに追加するためのボタンです
イメージ説明

こちらはエラー内容です
イメージ説明

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siruku6

2019/10/05 12:13 編集

carts_controllerの26行目で、メソッド名が空文字?のメソッドを呼び出そうとしているようです。 26行目がどこなのか目印を書いておくと、回答者の方も回答しやすいと思います。 また、routingエラーということは、呼び出そうとして失敗しているroutingがどこかに書かれていると思いますので、それも書いておくと良いと思います。
guest

回答1

0

ベストアンサー

エラーでは、cart_controllerの26行目に全角の空白がはいっている と言っています。そこを確認してみて下さい

投稿2019/10/05 17:32

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryota1017stars

2019/10/06 22:12

26行目にはコメントが書いてあったのですが、その中に全角の空白が入っていたようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問