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

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

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

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

Q&A

1回答

1167閲覧

http://localhost:3000にアクセスすると、app/views/prototypes/index.html.erbが表示されるようにしたい。

hiroyagima

総合スコア0

Ruby on Rails

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

0グッド

0クリップ

投稿2021/11/04 21:20

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
http://localhost:3000にアクセスすると、app/views/prototypes/index.html.erbが表示されるようにしたい。
■■な機能を実装中に以下のエラーメッセージが発生しました。
画像を投稿すると、表示される機能を実装中にエラーメッセージが出るようになりました。

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

ActionView::SyntaxErrorInTemplate in PrototypesController#index

該当のソースコード

ruby on rails

app/views/prototypes/index.html.erb <main class="main"> <div class="inner"> <%# ログインしているときは以下を表示する %> <% if user_signed_in? %> <div class="greeting"> <%= "こんにちは、" %> <%= link_to "#{current_user.name}さん", root_path, class: :greeting__link %> </div> <% end %> <%# // ログインしているときは上記を表示する %> <div class="card__wrapper"> <%# 投稿機能実装後、部分テン2プレートでプロトタイプ投稿一覧を表示する %> <%= render partial: 'prototype', collection: @prototypes %> </div> </div> </main>
app/controllers/prototypes_controller.rb class PrototypesController < ApplicationController def index @prototypes = Prototype.all end def new @prototype = Prototype.new end def create @prototype = Prototype.new(prototype_params) if @prototype.save redirect_to root_path else render :new end end private def prototype_params params.require(:prototype).permit(:title, :catch_copy, :concept, :image).merge(user_id: current_user.id) end end
app/models/prototype.rb class Prototype < ApplicationRecord belongs_to :users has_one_attached :image validates :image, presence: true validates :title, presence: true validates :catch_copy, presence: true validates :concept, presence: true end
app/views/protypes/_prototype.html.erb <div class="card"> <%= link_to image_tag (prototype.image, class: :card__img), root_path%> <div class="card__body"> <%= link_to prototype.title, root_path, class: :card__title%> <p class="card__summary"> <%= prototype.catch_copy %> </p> <%= link_to prototype.user.name , root_path, class: :card__user %> </div> </div>

試したこと

app/views/prototypes/index.html.erbを表示させたいのに、なぜか、app/views/protypes/_prototype.html.erbの <%= link_to image_tag (prototype.image, class: :card__img), root_path%>この部分がエラーとして出るので、prototype.imageの記述が間違っているか、画像を表示させる機能の実装中にエラーが起こったので、画像が保存されていないからなのか、など試しましたが、解決できませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

winterboum

2021/11/04 22:47

載っているエラーからは 「 <%= link_to image_tag (prototype.image, class: :card__img), root_path%>この部分がエラーとして出る」 とまでは読めません。エラーメッセージを全部載せていますか?
hiroyagima

2021/11/05 22:10

app/views/prototypes/_prototype.html.erb ```<div class="card"> <%= link_to image_tag(@prototype.image, class: :card__img), root_path %> <div class="card__body"> <%= link_to prototype.title, root_path, class: :card__title%> <p class="card__summary"> <%= prototype.catch_copy %>``` エラー文はこの部分です。
winterboum

2021/11/05 22:39

[エラー文はこの部分です。] と判断したのはエラーメッセージからだとおもいますが、 そのエラーメッセージを全文載せてくだwさい
hiroyagima

2021/11/05 22:43

ArgumentError in Prototypes#index app/views/prototypes/_prototype.html.erb where line #2 raised: ``` <div class="card"> <%= link_to image_tag(prototype.image, class: :card__img), root_path %> ⇦この部分がおそらく間違えている。 <div class="card__body"> <%= link_to prototype.title, root_path, class: :card__title%> <p class="card__summary"> <%= prototype.catch_copy %> ```
hiroyagima

2021/11/06 02:35

解決できました。 app/models/prototype.rb class Prototype < ApplicationRecord belongs_to :users → user 記述ミスでした。
guest

回答1

0

投稿2021/11/05 01:29

ka2n

総合スコア47

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

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

hiroyagima

2021/11/05 22:08

上記と同じ内容ですね。 ``` <div class="card"> <%= link_to image_tag(@prototype.image, class: :card__img), root_path %> <div class="card__body"> <%= link_to prototype.title, root_path, class: :card__title%> <p class="card__summary"> <%= prototype.catch_copy %> </p> <%= link_to prototype.user.name , root_path, class: :card__user %> </div> </div> ``` 2行目をリンク先にある通り、訂正しますと、NoMethodError in Prototypes#indexと出ます。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問