2012-11-20 2 views
0

입니다. 아래 link_to 태그가 있는데, 가장 좋은 방법은이 링크를 만들고 first_name과 last_name이 nil인지 확인하는 것입니다.레일스 조건부 링크를 만드는 가장 좋은 방법은

이름 중 하나만 nil (첫 번째 또는 마지막)이면 여전히 링크가 필요합니다.

<%= link_to "#{u.user_details.first_name+" "+u.user_details.last_name}", profile_path(u), :class => 'name' %> 
+0

link_to_if는 어떻게 사용합니까? http://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to_if –

답변

4

이를 달성하기 위해 깨끗한 방법은 조건이 작성되지 않은 경우 link_to_if

<%= link_to(u.user_details.full_name, 
      profile_path(u), 
      :class => 'name') if u.user_details.full_name.present? %> 

에서, 'name' 매개 변수는 반환되는 컨트롤러에, 그리고

class UserDetails 
    def full_name 
    [self.first_name, 
    self.last_name].compact.join(' ') 
    end 
end 

것, 그리고 당신은 이후 필요하지 않습니다 빈 문자열이됩니다.

0

"#{[u.user_details.first_name, u.user_details.last_name].join(' ')}"과 같은 앵커 문자열을 사용할 수 있습니다.

먼저 #join이 어떻게 작동하는지 확인하십시오.

단점은 제공된 사용자 정보가 없어도 링크가 생성되지만 앵커 문자열이 비어있는 것입니다. 빨리

0

실제로 동작하는 방법은 내가하지만, 그것을 리팩토링 수

<%= link_to_if u.user_details.first_name || u.user_details.last_name, 
[u.user_details.first_name, u.user_details.last_name].compact.join(' '), 
profile_path(u), :class => 'name' %> 

예 :

<% a = [u.user_details.first_name, u.user_details.last_name].compact %> 
<%= link_to_unless a.empty?, a.join(' '), profile_path(u), class: 'name' %> 
0

...

<%= link_to "#{u.user_details.first_name+" "+u.user_details.last_name}", profile_path(u), :class => 'name' if u.user_details.first_name.blank? or u.user_details.last_name.blank? %> 

그러나 나는 이것이 가장 좋은 방법은 잘 모르겠어요 :

0

나는 또한 그들이하지 blank 있습니다 확인 join을 사용 : 내 취향에 대한

<% name = [u.user_details.first_name, u.user_details.last_name].reject(&:blank?).join(" ") %> 
<%= link_to name, profile_path(u), :class => 'name' unless name.blank? %> 
1

이보기에 너무 많은 코드가있다. 모델과 도우미를 사용하고 싶습니다.

# user_details.rb 
def full_name 
    "#{first_name} {last_name}" 
end 

# helper.rb 
def my_link_to(user) 
    name = user.user_details.full_name 
    return "" if name.blank? 
    link_to name, profile_path(user), :class => 'name' 
end 

# view.erb 
<%= my_link_to user %> 
+0

' "# {first_name} {last_name}"'중 하나가 공백이면 처음에 공백이 있거나 'full_name'의 끝. – oldergod

+0

네가 맞아, 그것은 "# {first_name} {last_name}"이어야한다. "strip' – claasz

관련 문제