2011-05-30 65 views
0

我想这样做一个小白:将多个参数传递给ruby ==操作符的正确方法是什么?

<% if @page[:title] == "Portraits" %> 
     <%= render :partial => "/shared/slideshow" %> 
    <% elsif @page[:title] == "Escapes" %> 
     <%= render :partial => "/shared/slideshow" %> 
    <% elsif @page[:title] == "Articulos pa Web" %> 
     <%= render :partial => "/shared/slideshow" %> 
    <% end %> 

必须有这样做一个简洁的方式,但我就是想不通。

+0

谢谢,没有意识到这是我忽略的东西。完全是无意的。 – 2011-06-06 15:46:13

回答

4

避免将当前拥有的逻辑放在视图中。

def get_partial_to_render 
    if ["Portraits","Escapes","Articulos pa Web"].include? @page[:title] 
    "shared/slideshow" 
    else 
    "some_other_template" 
    end 
end 
#Note that the partial should not have a leading `/` in the path to it. 

而且在你看来:

把它放进一个辅助方法来代替,并在视图中使用它

<%= render :partial => get_partial_to_render %> 


或者,如果你不想如果名称不在数组中,则呈现部分:

def render_my_partial? 
    ["Portraits","Escapes","Articulos pa Web"].include? @page[:title] 
end 

<%= render :partial => "shared/slideshow" if render_my_partial? %> 

请注意,?是方法名称的一部分。 Ruby不是很棒吗? :D

2
<% if ["Portraits", "Escapes", "Articulos pa Web"].include?(@page[:title]) %> 
    <%= render :partial => "/shared/slideshow" %> 
<% end %> 
+0

是的,但您应该尽可能避免将这种逻辑放在视图中。 – Zabba 2011-05-30 22:52:22

相关问题