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

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

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

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

Q&A

1回答

676閲覧

undefined method `id' for nil:NilClassの解消ができません

shoukichi

総合スコア2

Ruby on Rails

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

0グッド

0クリップ

投稿2020/10/20 12:49

編集2020/10/21 04:08

プログラミング初心者です。
以下のエラー出ます
イメージ説明

カート機能を現在作成しております。
cartテーブルに外部キーとしてprotein_id,user_idを作成しており、またquatityカラムをcartテーブルに作成しています。
cartコントローラーにストロングパラメーターを記述したところエラーが出ました。
原因としては、protein.idが見つからないためエラーが出ていると予想しましたが解決方法が分かりません。
ご教授いただけば幸いです。
よろしくお願いします。

class CartsController < ApplicationController def index @cart = Cart.all end def new @protein = Protein.find(params[:format]) @cart = Cart.new end def create @cart = Cart.new(cart_params) if @cart.save redirect_to carts_path else render :new end end def destroy @cart.destroy redirect_to current_cart end private def cart_params params.require(:cart).permit(:quantity).merge(user_id: current_user.id, protein_id: @protein.id) end end
card.rb belongs_to :user has_many :proteins
protein.rb belongs_to :cart
def index @proteins = Protein.all end def new @protein = Protein.new end def create @protein = Protein.new(proteins_params) if @protein.save redirect_to root_path else render :new end end def show end def edit end def update if @protein.update(proteins_params) redirect_to protein_path else render :edit end end def destroy if @protein.destroy redirect_to proteins_path else render :show end end
protein show.hetml.erb <div class="cart"> <%=link_to "カートに追加", new_cart_path(@protein), class: 'cart-item' %> </div>

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

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

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

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

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

guest

回答1

0

@protein が突然出てきています。
これはどこで定義されてますか?

投稿2020/10/20 12:57

winterboum

総合スコア23347

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

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

shoukichi

2020/10/20 14:49

winterboum様 回答頂きありがとうございます。 @proteinはproteinコントロラーで定義しており、アソシエーションで持ってこれると思いまして、記入しました。
shoukichi

2020/10/20 14:52

cartコントローラーで@proteinを定義する方法があればそちらの方法もご教授頂ければと思います。
winterboum

2020/10/20 23:30

@protein とはそもそもなんですか? どのmodelからどういう条件で取り出すものですか?
shoukichi

2020/10/21 01:21

winterboum様 対応頂きありがとうございます。 お弁当が購入できるECサイトを作成しているのですが、@proteinはお弁当の弁当名や金額のデータの持った情報をなります。それをproteinの詳細画面(show)から「カートに追加」を押下した後、cartのnew画面に遷移し、一つのお弁当の情報を持った@proteinをcart(new)に表示させ、個数を選択したら、cart(index)に遷移し、購入が確定できる仕組みを作りたいのですが、 cart(index)に遷移しようとした際エラーが起こります。
winterboum

2020/10/21 03:53

proteinの詳細画面(show) の viewを
shoukichi

2020/10/21 04:09

詳細画面を追加させて頂きました。 よろしくお願い致します。
shoukichi

2020/10/21 04:39

cart(new)は@prtoein = Protein.find(params[:format])で一つの商品の情報を取得して表示させることができましたが、new(index)で情報が取得できていません。
winterboum

2020/10/21 23:16

??? cart(new),new(index) ってなんですか?  造語されてしまうとなんだかわからなくなります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問