🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

Ruby on Rails

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

Q&A

解決済

1回答

977閲覧

rails ユーザーアイコンが表示できない

munequn

総合スコア17

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2019/09/19 04:43

編集2019/09/19 04:45

Twitterのような投稿型Webアプリを作成中のrails初学者です。次のようなエラーが発生して困っています。
投稿詳細はクリックするとユーザーの画像を表示し、誰が投稿しているか分かるようにしたいです。
試したこと:dbの不具合の例があったのでdbからuser,posts全削除

ActionView::Template::Error (undefined method `image_name' for nil:NilClass): 3: <div class="posts-show-item"> 4: 5: <div class="post-user-name"> 6: <img src="<%= "/user_images/#{@user.image_name}" %>"> 7: <%=link_to(@user.name,"/users/#{@user.id}")%> 8: </div> 9: <p> app/views/posts/show.html.erb:6

エラーが発生しているソースコードshow.html.erb

<div class="main posts-show"> <div class="container"> <div class="posts-show-item"> <div class="post-user-name"> <img src="<%= "/user_images/#{@user.image_name}" %>"> <%=link_to(@user.name,"/users/#{@user.id}")%> </div> <p> <%= link_to "<" ,"javascript:history.back()" %> <%= @post.content%> </p> <div class="post-time"> <%= @post.created_at %> </div> <div class="post-menus"> <%=link_to"編集","/posts/#{@post.id}/edit"%> <%=link_to"削除","/posts/#{@post.id}/destroy", {method:"post"}%> </div> </div> </div> </div>

rotes.rb

get 'login' => 'users#login_form' post 'login' => 'users#login' post 'logout' => 'users#logout' post 'users/:id/update' => 'users#update' # ユーザー情報編集 get 'users/:id/edit' => 'users#edit' post 'users/create' => 'users#create' # 新規投稿 get 'signup' => 'users#new' # ユーザー一覧 get 'users/index' => 'users#index' # ユーザー詳細 get 'users/:id' => 'users#show' # ルーティングの設定 get 'posts/index' => 'posts#index' get 'posts/new' => 'posts#new' get 'posts/:id' => 'posts#show' post 'posts/create' => 'posts#create' # 編集 get 'posts/:id/edit' => 'posts#edit' # 編集 post 'posts/:id/update' => 'posts#update' # 削除 post 'posts/:id/destroy' => 'posts#destroy' # get "/" => "home#top" get 'about' => 'home#about' root 'home#top' end
class PostsController < ApplicationController # 承認されたユーザーに限定 before_action :authenticate_user def index @posts = Post.all.order(created_at: :desc) end def show @post = Post.find_by(id: params[:id]) @user = User.find_by(id: @user_id) end def new @post = Post.new end def create # フォームから送信されたデータを受け取り、保存する @post = Post.new(content: params[:content],user_id: @current_user.id) if @post.save flash[:notice] = '投稿を作成しました' redirect_to('/posts/index') else render('posts/new') end end # 編集を定義する def edit @post = Post.find_by(id: params[:id]) end # 編集内容を保存する def update @post = Post.find_by(id: params[:id]) @post.content = params[:content] if @post.save flash[:notice] = '投稿を編集しました' redirect_to('/posts/index') else # redirect_to("/posts/#{@post.id}/edit") render('posts/edit') end end # 削除 def destroy @post = Post.find_by(id: params[:id]) @post.destroy flash[:notice] = '投稿を削除しました' redirect_to('/posts/index') end # def post_params # Post.new(post_params) # end end

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

def show @post = Post.find_by(id: params[:id]) @user = User.find_by(id: @user_id) end

の @user_id が定義されていないため
@user = User.find_by(id: nil)
という検索になっています

投稿2019/09/19 07:27

winterboum

総合スコア23567

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

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

munequn

2019/09/19 11:28

いつもお世話になってます。 @user_idではなく@post.user_idで通りました。 user_idはdbに生成したモデルなのですがその場合は定義不要でしょうか?
winterboum

2019/09/19 13:03

定義と言ったのは「値が代入されていない」といういみでした。 ですので、@post.user_id は @post には値が入っていて、それが もでるPostのインスタンスだから、user_id がモデルとして定義されているので、OKです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問