2012-09-10 2 views
0

은 현재 내가 가지고있는 뷰에서 삼항 연산자에 포함 된 루비를 결합하기 :어떻게 이런 내보기 뭔가

<table> 
<tr> 
    <% if item.status == nil %> 
     <td><%= image_tag "/assets/nil.gif" %></td> 
    <% else %> 
     <% if item.status == "1" %> 
      <td><%= image_tag "/assets/yes.gif" %></td> 
     <% else %> 
      <td><%= image_tag "/assets/no.gif" %></td> 
     <% end %> 
    <% end %> 
</tr> 
... 

내가 여기 삼항 연산자를 사용할 수 있습니까? 나는 어디에 넣어야할지 몰랐다. 또는 :이 내장 된 루비와 html의 조합을 사용할 때. 따라서

답변

4
<%= 1 == 1 ? "one is one" : "one is two" %> 
# outputs "one is one" 

: 당신은 모두 세 가지 값을 테스트하기 때문에

<%= image_tag "/assests/#{ item.status == "1" ? "yes" : "no"}.gif" %> 

그러나이 경우, 도우미 메서드 내부 switch 문은 최고의 수 있습니다.

# app/helpers/items_help.rb 

def gif_name(status) 
    case status 
    when nil 
    "nil" 
    when "1" 
    "yes" 
    else 
    "no" 
    end 
end 

# app/views/items/action.html.erb 

<td><%= image_tag "/assests/#{gif_name(item.status)}.gif" %></td> 
+0

을 가진하여 if 문을 대체 할 수 nil 및 item.status == 1 –

+0

우수함. 이것은 효과가 있었다. – snowleopard

0

당신은 == 나는 그가 item.status를 포함하는 의미한다고 생각

<%= item.status.nil? ? <td><%= image_tag "/assets/nil.gif" %></td> : <td><%= image_tag "/assets/#{item.status == '1' ? 'yes.gif' : 'no.gif'" %></td> 

또는

<%= item.status.nil? ? <td><%= image_tag "/assets/nil.gif" %></td> : item.status == "1" ? <td><%= image_tag "/assets/yes.gif" %></td> : <td><%= image_tag "/assets/no.gif" %></td> %> 

삼항 연산자는 condition ? condition_true : condition_false

+0

나와있는 두 번째 옵션을 사용하려고합니다. 이것은 나를 위해 작동하지 않습니다. 나는 <% %>의 배치로 뭔가가 꺼져 있다고 생각합니다. 나는 어쩌면 첫 번째가되기 전에 %>가되어야한다고 생각했다. 그러나 그것은 작동하지 않았다. 그것을 알아내는 것을 시도하고있다 ... – snowleopard

+0

전체 끝 부분에 %>를 추가하는 것을 잊었다. Charles Caldwell이 말한 것은 맞습니다. 당신은 당신의 견해에 그 많은 논리를 붙이려 고해서는 안됩니다. 그것은 지저분해진다. 대신 도우미 메서드를 만듭니다. –

관련 문제