LoginSignup
0
0

More than 3 years have passed since last update.

Rails Tutorial 第13章 パーシャルのパスはカレントでも省略するとエラーになる

Posted at

リスト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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0