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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1577閲覧

image_tagで画像の表示ができません。

yyyyyyyyyy

総合スコア1

Ruby

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/10/09 09:31

編集2020/10/09 10:28

前提・実現したいこと

rubyで、投稿したものを表示するというツールを作っています。
投稿した画像を表示させる機能の実装中です。

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

その際に、

ruby

1 <%= link_to image_tag(prototype.image, class: :card__img ), prototype_path(prototype) %>

と記述し実行したところ、
ArgumentError in Prototype#index

Can't resolve image into URL: to_model delegated to attachment, but attachment is nil

とエラー表示されました。

該当のソースコード

index.html.erb

ruby

1<main class="main"> 2 <div class="inner"> 3 <% if user_signed_in? %> 4 <div class="greeting"> 5 こんにちは、 6 <%= link_to "#{current_user.id}", root_path, class: :greeting__link %> 7 </div> 8 <% else %> 9 <div class="card__wrapper"> 10 <% end %> 11 </div> 12 </div> 13 <%= render partial: "prototype"%> 14</main>

_prototype.html.erb

ruby

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

prototype.rb

ruby

1class Prototype < ApplicationRecord 2 belongs_to :user 3 has_one_attached :image 4 5 validates :image, presence: true 6 validates :title, presence: true 7 validates :catch_copy, presence: true 8 validates :concept, presence: true 9 10 11end

user.rb

ruby

1class User < ApplicationRecord 2 devise :database_authenticatable, :registerable, 3 :recoverable, :rememberable, :validatable 4 5 validates :name, presence: true 6 validates :profile, presence: true 7 validates :occupation, presence: true 8 validates :position, presence: true 9 10 has_many :prototypes 11end 12

prototype_controller.rb

ruby

1class PrototypeController < ApplicationController 2 3 def index 4 @prototypes = Prototype.all 5 end 6 7 def new 8 @prototype = Prototype.new 9 end 10 11 def create 12 @prototype = Prototype.create(prototype_params) 13 if @prototype.valid? 14 redirect_to root_path 15 else 16 render :new 17 end 18 end 19 20 private 21 22 def prototype_params 23 params.permit(:image,:title,:catch_copy,:concept).merge(user_id: current_user.id) 24 end 25end

routes.rb

Rails.application.routes.draw do devise_for :users root to: 'prototype#index' resources :prototype,only: [:index,:new,:create] end

試したこと

アソシエーションが間違っているために、prototype.imageで取得できていないのだと思い、アソシエーションの見直しを行いましたが、間違いが発見できませんでした。
また、エラー表示を調べたのですが、イマイチわからない状態です。絶望しています。

半日中悩んでしまったのでこちらで相談させていただきました。

よろしくお願いします…

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

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

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

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

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

m.ts10806

2020/10/09 09:36

そもそもprototype_path₍₎はどこに定義されているのでしょう。
yyyyyyyyyy

2020/10/09 09:46

routes.rb…ですか?????
m.ts10806

2020/10/09 09:50

聞いてるのはこちらです。 定義されていると思うのなら見てみれば分かるのではないでしょうか。 私はあくまでエラーメッセージからコメントしています。 > undefined method `prototype_path'
yyyyyyyyyy

2020/10/09 09:54

すみません、失礼しました 追記しました
guest

回答1

0

ベストアンサー

まずはimage_tagのみの記述で画像が表示できるか試してみましょう

あと気になったのは、link_toの引数にimage_tagが使えたかどうかです
以下のようにdoで子要素を持たせてそこにリンクの表示内容を記述する必要がある気がします

erb:

1<%= link_to [path_name] do %> 2 <%= image_tag [image] %> 3

投稿2020/10/09 12:41

kokitail

総合スコア135

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

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

yyyyyyyyyy

2020/10/10 04:53

本当に助かりました????‍♂️ ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問