質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

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

Q&A

解決済

1回答

1869閲覧

Routing Errorエラーが解決できない

begenner

総合スコア79

Ruby on Rails

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

0グッド

0クリップ

投稿2018/05/11 19:07

編集2018/05/11 19:10

現在ECサイトを作成しています。
商品ページを個別に作成し、そのViewの中に新しいフォームを作成してカート商品のレコードを新規登録したいのですが
Routing Error
の影響でうまくいきません(m_ m)
わかる方がいらっしゃいましたらご教授いただきますようよろしくお願いいたします(m
_m)
###エラー内容
![イメージ説明]
イメージ説明
###期待する動作
add_itemアクションが問題なく処理されて@cartitemのレコードを正常に新規登録できるようにしたい
###動作環境
OS:mac
Ruby:2.3.5
Ruby on Rails: 4.2.5
MySQL: 5.7.18

###参考サイト
Rails5でカート機能を作るためのロジックを作ってみた

※このサイトでは商品一覧ページからすぐにカートに入れる仕様になっています。
###試したこと

###該当のソースコード

ルーティング

ruby

1#config/routes.rb 2Rails.application.routes.draw do 3 resources :items do 4 member do 5 #↓↓↓↓ここに記述してもうまくいきませんでした。 6 # post 'carts/add_item', to: 'carts#add_item' 7 get 'preview' 8 end 9 end 10 post 'carts/add_item', to: 'carts#add_item' 11 resources :carts, only: [:show] 12 # get '/add_item', to: 'carts#add_item' 13 root to: 'top#index' 14end

Controller

ruby

1#app/controllers/items_controller.rb 2class ItemsController < ApplicationController 3. 4 def preview 5 @item = Item.find(params[:id]) 6 @cartitem = Cartitem.new 7 @caritem.item_id = @item.id 8 end 9. 10end 11 12#app/controllers/carts_controller.rb 13class CartsController < ApplicationController 14. 15 def add_item 16 @cartitem = Cartitem.new 17 @cartitem = Cartitem.create(cartitem_params) 18 redirect_to cart_path, success: "商品がカートに追加されました" 19 # binding.pry 20 end 21. 22 def cartitem_params 23 params.permit(:quantity, :item_id, :user_id) 24 end 25end

View

html

1<!-- app/views/items/preview.html.erb --> 2<h2>Items#preview</h2> 3. 4. 5 <%= form_tag(carts_add_item_path, method: :post) do %> 6 <%= hidden_field_tag :item_id, @item.id %> 7 <%= hidden_field_tag :user_id, current_user.id %> 8 <%= text_field_tag :quantity %> 9 <%= submit_tag 'カートに入れる' %> 10 <% end %> 11. 12.

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

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

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

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

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

guest

回答1

0

ベストアンサー

ルーティングの部分、

resources :carts, only: [:show] do collection do post :add_item end end

にしてもダメですか?

投稿2018/05/13 23:58

altb

総合スコア104

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

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

begenner

2018/05/15 17:32

返信が大変遅くなってすいません(m_ _m) コードをおっしゃっていただいた通り変更したところ期待通りの動作をしました!! ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問