ユーザー画像の表示エラーを改善したい お願いします
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 2↓ 3 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,エラー
回答1件
あなたの回答
tips
プレビュー