2010-08-04 4 views
1

은 내가 다음을 수행 루비 레일에 응용 프로그램을 가지고이되지 않을 수 있습니다모범 사례 사용자가

@user = User.find(:first, :conditions => ['LOWER(username) = ?', current_subdomain.downcase], :include => :bio) 

'=> 포함 : 바이오'는 중요한 부분입니다.

그런 다음보기에서 좀 바이오 표시하려면 :

<em><%= @user.bio.title %></em><br /> 
<%= @user.bio.city %><br /> 
<%= @user.bio.state %><br /> 
<%= @user.bio.country %> 

을하지만 사용자가 어떤 정보를 dosn't 경우는 빈 행의 몇 가지를 설정합니다. ...

<% if @user.bio.title %> # is always true 
<% if @user.bio.title > 0 %> # triggers an error if @user.bio.title isn't set 
<% unless @user.bio.title.empty? %> # same as above 

단지 사용자가 가지고있는 데이터를 표시하는 방법에 대한 모든 sollution이

나는 다른 몇 가지를 시도했습니다 아무도 지금까지 일을하지 않았다?

미리 감사드립니다.

UPDATE

좋아, 몇 가지를 알아 낸 경우 :

<% if @user.bio.title %> # Works if the bio isn't set at all. 
<% if @user.bio.title > 0 %> # Works if the bio is set. 

그래서 나는처럼 보이는 sollution 사용할 수 있습니다

<% if @user.bio.title %><% if @user.bio.title > '0' %><%= @user.bio.title %><% end %><% end %> 

을하지만 약간의 과잉을 심? 더 좋은 제안이 있습니까?

감사합니다.

답변

3

여기에 대해 생각해보십시오. 사용자는 약력을 가지고 있으며 제목 필드를 채 웁니다. 루비에서 :

<% if @user.bio && [email protected]? %> 

당신은 예를 들어,이 검사에이를 분리 할 수 ​​있습니다 바이오에서 여러 필드를 표시하려는 경우

<% if @user.bio %> 
    <% unless @user.bio.title.blank? %> 
    Title: <%= @user.bio.title %> 
    <% end %> 
    <% unless @user.bio.other_field.blank? %> 
    Other field: <%= @user.bio.other_field %> 
    <% end %> 
<% end %> 

대체

또 다른 방법은 바이오 분야에 직접 액세스를 제공하는 모델에 방법을 넣어하는 것입니다. 예 :

# return the user's title or nil if no bio 
def title 
    bio.title if bio 
end 

그런 다음보기에 당신은 다만 할 수 있습니다

<% unless @user.title.blank? %> 
    Title: <%= @user.title %> 
<% end %> 
+0

! 확실한 경우 더빙보다 좋습니다. 감사합니다. – Alfred

+0

나는 여기서 대안을 좋아하고,보기 코드를 모델 코드로 끌어 낸다. –

0

시도해 볼 수 있습니까?

if defined?(@user.bio.title) 
+0

솔기는 항상 false를 반환합니다 : <% 정의 된 경우 (@ user.bio.title) %?><% = @ user.bio.title %><% end %> 작동 – Alfred

0

은 아마 당신은 object.try 또는 andand을 확인할 수 있습니까? 지금 빨리 시도 할 때