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

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

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

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

Ruby on Rails

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

Q&A

解決済

2回答

3849閲覧

link_toの中にimage_tagを挿入したい。

zoomer

総合スコア1

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/10/06 08:55

編集2020/10/06 09:05

#実現したいこと
投稿一覧のページに投稿された写真一覧をアップし、写真、写真のタイトル、説明文ユーザー名から詳細ページに遷移させようとしております。

下記のコードは上段がエラー文、下記が該当のビューファイルです。(pathは仮でrootにしています。)

現状はこのように記載しております。

ゴールは下記のHTMLのビューから詳細ページに飛ばすことです。

変数の定義、もしくは、文法が違うのかと思いますが、様々なサイトを拝見しましたが、原因を特定出来ません。

どこがどのようにおかしいか教えて頂けますでしょうか。

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

発生している問題・エラーメッセージ

NoMethodError in Photos#index
undefined method `image' for nil:NilClass

error

1<div class="card"> 2 <%= link_to image_tag("#{@photo.image}", class: :card__img ), root_path%>(現在のエラー箇所) 3 <div class="card__body"> 4 <%= link_to "#{@photo.title}", root_path, class: :card__title%> 5 <p class="card__summary"> 6 <%= "#{@photo.catch_copy}" %>

html

1<div class="card"> 2 <%= link_to image_tag("#{@photo.image}", class: :card__img ), root_path%> 3 <div class="card__body"> 4 <%= link_to "#{@photo.title}", root_path, class: :card__title%> 5 <p class="card__summary"> 6 <%= "#{@photo.catch_copy}" %> 7 </p> 8 <%= link_to "by #{user.name}", root_path, class: :card__user %> 9 </div> 10</div>

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

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

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

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

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

maisumakun

2020/10/06 09:00

NoMethodError in Photos#indexがどの行に出ているかなど、エラーメッセージに詳細が出ているかと思いますので、そちらもご提示いただけませんでしょうか?
zoomer

2020/10/06 09:03

ご回答ありがとうございます。 エラーが出ているのはerrorの2行目の <%= link_to image_tag("#{@photo.image}", class: :card__img ), root_path%> こちらです。 その下のコードもあっているかは現状はわからない状態でございます。
guest

回答2

0

自己解決

link_to ("#{image_tag @photo.image}"に変更して、解決しました。

投稿2020/10/07 09:20

zoomer

総合スコア1

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

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

0

おそらくですが、@prhotoというスペルミスが問題なのではないでしょうか。

投稿2020/10/06 08:56

maisumakun

総合スコア146018

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

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

maisumakun

2020/10/06 09:02

どうやら、コピペミスだったようです(質問のほうが修正されています)。
maisumakun

2020/10/06 09:05

ちゃんと@photoは来ていますでしょうか? (Rubyの場合、nilに対しても存在すればメソッドは呼べるので、意図せずに値がnilとなった場合もNoMethodErrorが発生します)
zoomer

2020/10/06 09:15

上記のビューを触る前に、Photo.modelにてバリデージョンの設定をしました。 また、Photo.controllerにてrequireとpermitの設定をして、画像が保存されているのは確認出来ていております。 また、@prototypes = Prototype.alというのもPhoto.controllerに定義してありますが、現状はビューにデータが飛んでいないように思います。
maisumakun

2020/10/06 09:53

コントローラーはどのように書いていますか?
zoomer

2020/10/06 10:25

class PhotoController < ApplicationController def index @photo = Photo.all end def new @photo = Photo.new end def create if Photo.create(photo_params) redirect_to root_path else render :new end end def show end private def photo_params params.require(:photo).permit(:title, :catch_copy, :image).merge(user_id: current_user.id) end end
zoomer

2020/10/06 10:26

コントローラーは上記の通りです。 ご確認お願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問