我有一个UserMailer View,它有几个link_to,如下所示:
<%= link_to('XXXXXXXX Link Title', item_url(@item, :only_path => false), :style => 'color:#5196E3;text-decoration:underline;') %>
该页面有几个不同的链接。我想知道是否有一种方法可以在视图中进行全局设置以启用或禁用链接。
如果启用,上面会像正常一样运行,如果不是上面的块只显示文本(XXXXXXXX链接标题)而没有链接?
除了在IF语句中包装每个link_to之外的任何想法吗?
由于
答案 0 :(得分:15)
Rails已经提供了link_to_if
帮助......
因此,在控制器类中定义@some_boolean
,或者如果你想要一个真正的全局,那么适当地设置$some_boolean
。然后使用link_to_if
:
<%= link_to_if(@some_boolean, "Link Title", <url etc..>) %>
答案 1 :(得分:6)
您可以创建一个辅助方法来获取链接参数并返回所需的值。这意味着你只会实现一个IF语句。(它将在帮助器中。)
Sean Hill的好评:助手应该在帮助文件中:)
helper_method :conditional_link
def conditional_link(string,url)
if true_condition
return link_to string, url
else
return string
end
在您的视图中<%= conditional_link string, url %>
答案 2 :(得分:0)
<%= link_to_if( some_boolean, "Link Title", <url etc..>) { link_to "link title", <url etc..>} %>
请记住,如果您不使用代码块,则会出现文本,如果您想在其他样式中呈现错误,则使用代码块。