Rails视图:有条件地显示文本和链接;有比这更简单的方法吗?

时间:2012-01-10 17:07:39

标签: ruby-on-rails erb

在Rails(erb)视图中,我想条件显示一些文本和链接。

有什么比这简单:

<% if some_condition %>
        Go to  
<%=     link_to("Home", root_url) %>
<%  else %>
        See all
<%=     link_to("objects", my_objects_path) %>
<%  end %>

我对<%<%=标记的数量感到有些恼火。

1 个答案:

答案 0 :(得分:0)

作为帮助者(取决于实际使用情况,它可能是应用程序范围的帮助程序,模型帮助程序等):

def home_or_objects c
  if c
    link_to "Go to home", root_url
  else
    link_to "See all objects", my_objects_path
  end
end

(我不会只链接一个单词 - 较小的目标,而且IMO不那么沟通.YMMV。)

然后在视图中:

<%= home_or_objects some_condition %>

作为一个部分,它是渲染部分的问题,也许是将条件作为本地传递,或者如果它是一个实例变量,它可以直接引用而不需要传递。

<%= render :partial => 'home_or_objects', :locals => { :c => some_condition } %>

(有一些方法可以处理部分.IMO帮手更合适。)