前提・実現したいこと
ここに質問の内容を詳しく書いてください。
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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
載っているエラーからは
「 <%= link_to image_tag (prototype.image, class: :card__img), root_path%>この部分がエラーとして出る」
とまでは読めません。エラーメッセージを全部載せていますか?
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 %>```
エラー文はこの部分です。
[エラー文はこの部分です。]
と判断したのはエラーメッセージからだとおもいますが、
そのエラーメッセージを全文載せてくだwさい
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 %>
```
解決できました。
app/models/prototype.rb
class Prototype < ApplicationRecord
belongs_to :users → user 記述ミスでした。