気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
すいません画像とスニペットを貼りたいので再度解答させてください。
まず、頂いたlike.html.erbをみました。
原因としてはエラーが行っているようにend-of-inputのエラーです。
おそらく最後の方に<% end %>が2つありますよね?
これは様々な修正を行っている途中で出来たものだと思います。
なのでその<% end %>を一つ削除して下さい。
また、その下にある</div>も必要ない気がするので削除してくださいー!
そうしたら文法エラーが無くなると思います。
また、これはこれから気をつけたらいいなぁと思うことなのですが、
コード(htmlもcssもjsもrubyもrailsも他にも...)を書く上でインデントはすごく注意して下さい。
何かの中になにかがあるならそれは一段下げて表示してください。
例えば以下のような構造だと、タグの階層構造でどこのif文がどのendに対応しているかが見やすいです。
html
1<div> 2 <div> 3 <% if @user.image %> 4 <img src="<%= @user.image %>" width="100%"> 5 <% if @user.introduction %> 6 <p><%= @user.introduction %></p> 7 <% else %> 8 <p>まだ自己紹介は未設定だね!</p> 9 <% end %> 10 <% else %> 11 <p>プロフィール画像は未設定です</p> 12 <% end %> 13 </div> 14</div>
しかし、階層構造がバラバラだとどれがどのif文に対応しているかわかりません。
html
1<div> 2 <div> 3 <% if @user.image %> 4 <img src="<%= @user.image %>" width="100%"> 5 <% if @user.introduction %> 6 <p><%= @user.introduction %></p> 7 <% else %> 8 <p>まだ自己紹介は未設定だね!</p> 9 <% end %> 10 <% else %> 11 <p>プロフィール画像は未設定です</p> 12 <% end %> 13 </div> 14</div>
もちろん階層構造が原因ではありませんが、<% end %>が2つ不適切な部分にあるという階層構造化してhtmlを書いていれば比較的防ぎやすいエラーが起きてしまったので非常にもったいないです!
もし可能であればインデントを付けて綺麗なhtmlにしてみてください!
そうすることで必要ないミスも減りますし、そもそもエラーが起きても発見するまでの時間は早くなりますよ!
ということで、endのミスを直してみてくださいーー!
これで全て治ればいいのですが、、、、(笑)
最後に下に修正前と修正後のコードを張っておきますね!
修正後
<%= render "partial/navbar" %> <div class="user-show"> <div class="container"> <div class="row"> <div class="col-lg-3 col-md-4"> <div class="user-profile row-space-4 text-center"> <% if current_user.image %> <img src="<%= "/user_images/#{@user.image}" %>" class="profile-full img-circle"> <% else %> <p><%= link_to "プロフィール画像を追加する", edit_user_path(current_user), class:"profile-full img-circle" %></p> <% end %> </div> </div> <div class="col-lg-9 col-md-8 col-sm-12"> <div class="user-title"> <% if current_user.name %> <h1><%= @user.name%></h1> <% else %> <p><%= link_to "ユーザー名を追加して下さい", edit_user_path(current_user) %></p> <% end %> <% if current_user.id == @user.id %> <%= link_to "プロフィール編集", edit_user_path(current_user), class: "btn btn-default btn-full" %> <%= link_to "ログアウト", destroy_user_session_path, method: :delete, class: "btn btn-default btn-full" %> <% end %> </div> <div class="user-description"> 自己紹介: <% if current_user.description %> <%= @user.description %> <% else %> 自己紹介文が空白です。<%= link_to "自己紹介を書く", edit_user_path(current_user) %> <% end %> </div> </div> </div> </div> <ul class="user-tabs"> <li><%= link_to("質問", "/users/#{@user.id}") %></li> <li class="active"><%= link_to("お気に入り", "/users/#{@user.id}/likes") %></li> </ul> <br> <hr> <% @likes.each do |like| %> <% question = User.find_by(id: like.question_id) continue if question.nil? %> <div class="card"> <div class="card-block"> <h4 class="card-title"> <img src="<%= "/user_images/#{question.user.image}" %>" class="img-circle profile-1"> </h4> <h6 class="card-subtitle mb-2 text-muted"> <%= link_to(question.user.name, "/users/#{question.user.id}") %> </h6> <hr> <p class="card-text"> <%= link_to(question.content, "/questions/#{question.id}") %> </p> <p class="card-link"> <%= question.created_at.strftime('%Y/%m/%d %H:%M') %> </p> </div> </div> <% end %> <% end %> </div> </div>
修正前
<%= render "partial/navbar" %> <div class="user-show"> <div class="container"> <div class="row"> <div class="col-lg-3 col-md-4"> <div class="user-profile row-space-4 text-center"> <% if current_user.image %> <img src='<%= "/user_images/#{@user.image}" %>' class="profile-full img-circle"> <% else %> <p><%= link_to "プロフィール画像を追加する", edit_user_path(current_user), class:"profile-full img-circle" %></p> <% end %> </div> </div> <div class="col-lg-9 col-md-8 col-sm-12"> <div class="user-title"> <% if current_user.name %> <h1><%= @user.name%></h1> <% else %> <p><%= link_to "ユーザー名を追加して下さい", edit_user_path(current_user) %></p> <% end %> <% if current_user.id == @user.id %> <%= link_to "プロフィール編集", edit_user_path(current_user), class: "btn btn-default btn-full" %> <%= link_to "ログアウト", destroy_user_session_path, method: :delete, class: "btn btn-default btn-full" %> <% end %> </div> <div class="user-description"> 自己紹介: <% if current_user.description %> <%= @user.description %> <% else %> 自己紹介文が空白です。<%= link_to "自己紹介を書く", edit_user_path(current_user) %> <% end %> </div> </div> </div> </div> <ul class="user-tabs"> <li><%= link_to("質問", "/users/#{@user.id}") %></li> <li class="active"><%= link_to("お気に入り", "/users/#{@user.id}/likes") %></li> </ul> <br> <hr> <% @likes.each do |like| %> <% question = User.find_by(id: like.question_id) continue if question.nil? %> <div class="card"> <div class="card-block"> <h4 class="card-title"> <img src="<%= "/user_images/#{question.user.image}" %>" class="img-circle profile-1"> </h4> <h6 class="card-subtitle mb-2 text-muted"> <%= link_to(question.user.name, "/users/#{question.user.id}") %> </h6> <hr> <p class="card-text"> <%= link_to(question.content, "/questions/#{question.id}") %> </p> <p class="card-link"> <%= question.created_at.strftime('%Y/%m/%d %H:%M') %> </p> </div> </div> <% end %> <% end %> </div> </div>
投稿2017/07/26 05:46
総合スコア1869
0
エラーの発生箇所
どの部分がエラーになっているのでしょうか?
エラー画面の赤くなっている行がエラーが発生している箇所です。
また、エラーメッセージにはundefined method
user' for ...`と出ていますが、
これは userメソッドが定義されていませんよ という意味ですので、コード中でuserメソッドを呼び出している箇所がどこかを考えてみましょう。
ここでは、question.user.image
というコードがあり、questionからuserメソッドを読んでいることが分かるので、この部分がエラーになっているということがわかります。
修正方法
さて、questionオブジェクトにはuserメソッドが定義されていないことが分かったかと思います。
questionオブジェクトはquestion = User.find_by(id: like.question_id)
という処理でセットされていますね?
find_by
メソッドは対象のデータが存在しない場合にnil
を返します。
今回のコードではquestion(質問?)を取得したいはずなのにUser
テーブルのデータを検索していることが問題なのかと思います。
おそらく、QuestionというModelクラスが存在していると思うので、該当箇所を下記のように修正すれば動作させることが出来るのではないでしょうか?
question = Question.find_by(id: like.question_id)
投稿2017/07/26 04:08
総合スコア78
0
コードがすべてわかるわけではないので推測ですが、
question = User.find_by(id: like.question_id
なのでquestionはUserクラスのインスタンスです。
なのでuserインスタンス.user.image
ではなくてuserインスタンス.image
ではないでしょうか?
つまり
<img src="<%= "/user_images/#{question.user.image}" %>" class="img-circle profile-1"> ↓ <img src="<%= "/user_images/#{question.image}" %>" class="img-circle profile-1">
と言った感じです!
ただ、belongs_toなどで他のテーブルと関連付けている可能性もあるので一概には言えませんが。。。。
投稿2017/07/26 03:59
総合スコア1869
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/26 04:07
2017/07/26 04:58
退会済みユーザー
2017/07/26 05:04
2017/07/26 05:07
退会済みユーザー
2017/07/26 05:09 編集
2017/07/26 05:11
退会済みユーザー
2017/07/26 05:17
2017/07/26 05:19
退会済みユーザー
2017/07/26 05:26 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/26 06:04 編集
2017/07/26 06:24
退会済みユーザー
2017/07/26 06:57
2017/07/26 07:02 編集
退会済みユーザー
2017/07/26 07:15
2017/07/26 07:18