2016-04-09 4 views
0

これは私が取得エラーです:か基づいてユーザーが作成した、それ

<% if @profile_info.present? %> 
    <%= @profile_info.region.name %> 
<% else %> 
    <%= @user.email%> 
<% end %> 

この:これは私のユーザーが条件付き/ショーです

Showing /home/ubuntu/workspace/UMUV/app/views/users/show.html.erb where line #6 >>raised: 

undefined method `name' for nil:NilClass 

def show 
    @user = User.find(params[:id]) 
    @profile_info = Profile.find_or_initialize_by(user_id: params[:id]) 
    end 

私は基本的に、ユーザーのプロフィールページとユーザーhを訪問するときにエラーが発生しないように知りたがっていますまだプロフィールを更新していません。ページを表示するには、手動で「ページの編集」を使用してユーザーのプロファイルを更新しても問題ありません。

条件付きでお手伝いください。私もuser.rbやusers/controllerにメソッドを作成できる気がしますが、本当にこの条件を実装して私が望むことをする方法はわかりません。

あなたは

答えて

1

さてあなたはいつもnew_record使用して保存されたオブジェクト対initalizedオブジェクトをテストすることができ感謝しますか? - より多くのようなあなたの上記のビューの外観を作ることになる。また、あなたが

のように、属性が存在しない場合は優雅に失敗し、ページの一部に tryを利用することができるかもしれない

<% if @profile_info.new_record? %> 
    <%= @user.email%> 
<% else %> 
    <%= @profile_info.region.name %> 
<% end %> 

@profile_info.region.try(:name) 
+0

はそんなにTRHに感謝します。両方の提案が助けになりました!彼らはどちらもかなりうまくいく。私は現在と一緒に頑張っていた?なし?空の?しかし、私は違いをよく理解していないと思うので、私はこのすべてのBCについてもっと読むことをお勧めします。一度私が正しい評判のポイントを持っていれば、戻ってupvote来てくれてありがとう。 – loloso

0

あなたのエラーは名前が@profile_info.region.nameが存在しないとされているので、あなたが変更することができ、あなたの条件に:

<% if @profile_info.region.name.present? %> 
    <%= @profile_info.region.name %> 
    <% else %> 
    <%= @user.email%> 
    <% end %> 

それともあなたが本当にしたい場合TESへ

<% if @profile_info.present? %> 
    <% if @profile_info.region.name.present? %> 
     <%= @profile_info.region.name %> 
    <% end %> 
    <% else %> 
    <%= @user.email%> 
    <% end %> 

私はそれが役に立てば幸い:あなたはこのような巣の条件文ができ@profile_info.present?トン!これで

<% if @profile_info.present? %> 
    <%= @profile_info.region.name %> 
<% else %> 
    <%= @user.email%> 
<% end %> 

<% if @profile_info.present? %> 
    <%= @profile_info.region.try(:name) %> 
<% else %> 
    <%= @user.try(:email)%> 
<% end %> 

もこの記事を経る:あなたはこの置き換えることができますあなたのショーのページで

+0

ありがとうございます。私はプレゼントを試しましたか?方法の前にしかしdidntの助け。 tryを使ってabhilashとtrhの両方の回答がうまくいった!!あなたの助けをありがとう。この場所は素晴らしいと私は喜んでpplはここでお互いを助けます。私はこのすべてに新しいので、このすべてを見ることができて嬉しいです。ありがとうございました。 – loloso

関連する問題