リスト13.43は演習で変更していたようで、テキストと違った
new.html.erbには修正すべきerror_messagesの行がありませんでした。
views/users/new.html.erb
<%= render 'form' %>
formに移してあったので、修正しました。
views/users/_form.html.erb
<%= form_for(@user, url: yield(:url_path) ) do |f|%>
<%#= render 'shared/error_messages', object: @user %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
おそらく過去に演習で変更していたと思われます。ネットで同じ方がいたため。
パーシャルのパスに、カレントを想定して省略するとエラーになった
パーシャルが見つからないとエラーになりました。
同じフォルダにあるので、フォルダ名を省略してファイル名を書いていました。
ActionView::Template::Error (Missing partial microposts/_userandmicropost, application/_userandmicropost with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in:
* "/home/ubuntu/environment/sample_app/app/views"
):
1:
2: <% if logged_in? %>
3: <%= render 'userandmicropost' %>
パーシャルのパスに、static_pages/xxxと省略せずに書いたところ直りました。
1回目の呼び出しではエラーにならず、Postボタンを押したときにエラーになります。
理由は分かりませんが、ネットの他の方もstatic_pages/xxxxと書いていました。
views/static_pages/home.html.erb
<% if logged_in? %>
<%= render 'static_pages/userandmicropost' %>
演習13.3.3.2でエラー、再実行したら正常終了
1回目はfalseでエラーです。
>> Micropost.where("user_id = ?", user.id) == user.microposts
Micropost Load (1.6ms) SELECT "microposts".* FROM "microposts" WHERE "microposts"."user_id" = ? ORDER BY "microposts"."created_at" DESC [["user_id", 1]]
Micropost Load (0.2ms) SELECT "microposts".* FROM "microposts" WHERE (user_id = 1) ORDER BY "microposts"."created_at" DESC
=> true
>> Micropost.where("user_id = ?", user.id) == user.feed
=> false
consoleをいったん終了してやり直してみると、2回目はtrueで正常終了に変わりました。原因不明です。
>> Micropost.where("user_id = ?", user.id) == user.feed
=> true