2016-04-09 23 views
0

En fazla bu hatadır:veya esaslı kullanıcıların oluşturduğu olan bu

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

Bu: Bu benim kullanıcılar koşullu/gösteri

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

undefined method `name' for nil:NilClass 

kullanıcılar/denetleyici içinde:

temelde ben bir kullanıcının profil sayfasını ve kullanıcı h ziyaret ettiğinde bir hata olmadığı için nasıl bilmek istiyorum
def show 
    @user = User.find(params[:id]) 
    @profile_info = Profile.find_or_initialize_by(user_id: params[:id]) 
    end 

henüz profillerini güncellemedi. Kullanıcının profilini "düzenle" sayfası aracılığıyla manuel olarak güncellerseniz sayfanın gösterilmesi iyi olur.

Lütfen koşullara yardımcı olun. Ben de user.rb veya user/controller metodunu yaratabileceğime dair bir his var ama gerçekten istediğim şeyi yapmak için bu koşulu nasıl uygulayacağımı bilmiyorum.

Eğer

cevap

1

Eh her zaman new_record kullanarak kaydedilmiş bir nesne vs bir initalized nesneyi test edebilirsiniz ederiz? - daha sevdiği yukarıdaki görünümü göz bulunması şeklinde:

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

Bir ayrıntıyı yoksa incelikle başarısız Sayfanız adına try yararlanmak mümkün olabilir,

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

seni çok trh teşekkür ederim. her iki tavsiyeniz de yardımcı oldu! ikisi de oldukça iyi çalışıyorlar. hediye ile çok mu çalışıyordum? nil? boş? vs ama sanırım ben iyi bir farkı anlayamıyorum - bu yüzden daha iyi daha fazla okumaya devam edeceğim muhtemel hasta gelecekte tekrar onları tekrar karşılaşma. Çok teşekkür ederim, geri gelip doğru şöhret noktalarına sahip olduğumda tekrar gel. – loloso

0

hata adı @profile_info.region.name mevcut olmama ile olduğundan değiştirmek olabilir senin koşullu için:

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

Yoksa gerçekten istiyorsanız tes etmek t @profile_info.present? böyle yuva şart olabilir:

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

Bunu umut olur!

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

ve ayrıca bu yazı geçmesi: bununla

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

: Şov sayfasında

+0

teşekkür ederim lflores. Hediyeyi denedim mi? metodu önce ama yardım etmedi. denemek hem kullanarak abhilash ve trh cevap çalıştı! yardımlarınız için teşekkür ederim. Burası harika ve ben memnunum ppl burada birbirinize yardımcı olur. Bütün bunlara yeniyim, tüm bunları görmek için çok mutluyum. teşekkür ederim. – loloso

İlgili konular