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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

2174閲覧

Ruby on Rails ユーザー画像の表示でエラーが出る

piyomatu

総合スコア20

Ruby

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

Ruby on Rails

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

0グッド

1クリップ

投稿2019/05/15 06:28

ユーザー画像の表示エラーを改善したい お願いします

Progate Ruby on Rails5 VII で、Tweet_appをローカル環境で試して作成しています。
Progate環境では問題ありませんが、
5:ユーザー画像を表示しようの場所がローカルで実行するとエラーに。

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

NoMethodError in Users#index Showing /Users/satouyuuki/Desktop/sample_app/app/views/users/index.html.erb where line #9 raised: undefined method `image_name' for #<User:0x00007fdc75b8f818> Extracted source (around line #9): ・ ・ ・ <div class="user-left"> <!-- <img>タグを用いて、プロフィール画像を表示してください--> <img src= "<%= "/users_images/#{user.image_name}"%>"> </div> <div class="user-right"> <!-- 以下の<%= %>を使ってユーザー名を表示してください --> ・ ・ ・ Rails.root: /Users/satouyuuki/Desktop/sample_app Application Trace | Framework Trace | Full Trace app/views/users/index.html.erb:9:in `block in _app_views_users_index_html_erb__2611043229322348439_70292422198500' app/views/users/index.html.erb:5:in `_app_views_users_index_html_erb__2611043229322348439_70292422198500' Request Parameters: None

該当のソースコード

ruby

1users/index.html.erb 23 4<div class="main users-index"> 5 <div class="container"> 6 <h1 class="users-heading">ユーザー一覧</h1> 7 <!-- 以下の<% %>を使ってeach文を追加してください --> 8 <% @users.each do |user|%> 9 <div class="users-index-item"> 10 <div class="user-left"> 11 <!-- <img>タグを用いて、プロフィール画像を表示してください--> 12 <img src= "<%= "/users_images/#{user.image_name}"%>"> ←ここでエラー発生 13 </div> 14 <div class="user-right"> 15 <!-- 以下の<%= %>を使ってユーザー名を表示してください --> 16 <%= link_to(user.name, "/users/#{user.id}")%> 17 </div> 18 </div> 19 <!-- 以下の<% %>を使ってeach文のendを追加してください --> 20 <% end %> 21 </div> 22</div> 23 24

試したこと

users_controller.rbが間違っていないか確認して入れ直しましたが、うまく機能しませんでした。
users_controller.rb

def create
@user = User.new(
name: params[:name],
email: params[:email],
image_name: "default_user.jpg" ←ここがimage_name定義
)

if @user.save flash[:notice] = "登録が完了しました" redirect_to("/users/#{@user.id}") else flash[:notice] = "すでに登録されたemailです" render("/users/new") end

end

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

index.html.erb の
<img src= "<%= "/users_images/#{user.image_name}"%>"> を
user.id にすると何もない画像アイコンが出ます。

public/user_images/efault_user.jpg
と画像もしっかり入れています。

行った手順
1,ターミナルで rails g migration add_image_name_to_users 実行 → ファイル作成できています

2,そのファイルに
class AddImageNameToUsers < ActiveRecord::Migration[5.0]
def change
add_column :users, :image_name, :string
end
end
と変更

3, ターミナルで rails db:migrate と変更反映

4, create アクションで
def create
@user = User.new(
name: params[:name],
email: params[:email],
# 引数を追加し、初期画像が設定されるようにしてください
image_name: "default_user.jpg"
)
.
.
.

5, index.html.erb に <img src= "<%= "/users_images/#{user.image_name}"%>"> 記載
6,エラー

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

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

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

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

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

asm

2019/05/17 06:54

Userモデルの詳細が分かりませんが DBの方にimage_nameカラムはあるのでしょうか?
piyomatu

2019/05/18 04:00

DBの方にimage_nameカラムはあります。 もう一度作り直したらちゃんと表示できるようになりました。 原因はどこかしらの表記ミスだと思います。
guest

回答1

0

自己解決

作り直したらちゃんと表示できるようになりました。
原因はインデントミスであったり、半角、全角ミスでした。

投稿2019/05/18 04:02

piyomatu

総合スコア20

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問