ビューをレンダリングするのに問題があります。エラーが発生する理由を知っていると思います:
undefined method `name' for nil:NilClass
抽出されたソース (21 行目あたり): (18 ~ 24 を表示)
<ul>
<%= form_tag(default_hero_user_path, :method=>'post') do %>
<%= label_tag "Name" %>
<%= text_field_tag "name", @user.default_hero.name %> #line 21
<%= submit_tag 'Set hero', class: "btn btn-large btn-primary" %>
<% end %>
</ul>
nil オブジェクトで .name を呼び出せないことはわかっていますが、@user.default_hero が nil である理由がわかりません。ユーザーが「ヒーロー」を設定できるようにしたいのですが、明らかにデフォルトの設定に問題があります。
ユーザーコントローラーは次のとおりです。
# creates or updates the default hero
def default_hero
@user = User.find(params[:id])
hero = @user.default_hero
if hero.nil?
# we don't have a default hero so we need to add one'
hero = Hero.new
@user.heros << hero
end
hero.default = true
hero.name = params[:name]
hero.save
redirect_to @user # shows the user again to see any updates
end
そして、ここで、デフォルトのビューを設定する際に問題があると思います-
def show
@user = User.find(params[:id])
if @user.default_hero.nil?
name = params[:q]
else
name = @user.default_hero.name
end
これを解決する方法について正しい方向に私を向けることができれば、皆さんの時間と注意に感謝します.