如果条件为真,我怎么能使用link_to_unless
的相同块(代替示例中的'Hello'),而不是将块写两次(带if ... else
)?
<%= link_to_unless(url.nil?, 'Hello') do %>
<%= image_tag(image_url) %>
<h1><%= title %></h1>
<h2><%= subtitle %></h2>
<% end %>
如果url
存在
<a href="url">
<img src ... />
<h1>...</h1>
<h2>...</h2>
</a>
如果url
为nil
,则和没有链接的相同内容
<img src ... />
<h1>...</h1>
<h2>...</h2>
答案 0 :(得分:2)
你实际上可以像这样创建一个帮助方法
在你的application_helper.rb中:
def conditional_link(options={}, &block)
unless options.delete(:hide_link)
concat content_tag(:a, capture(&block), options)
else
concat capture(&block)
end
end
在你看来:
<% conditional_link(:hide_link => url.nil?, :href => "/hello" ) do %>
<%= image_tag(image_url) %>
<h1><%= title %></h1>
<h2><%= subtitle %></h2>
<% end %>
假设您的url.nil?
通过返回布尔值
您当然可以向链接传递更多选项,例如类或ID:
<% conditional_link(:hide_link => url.nil?, :href => "/hello", :class => "myclass", :id => "myid" ) do %>
<%= image_tag(image_url) %>
<h1><%= title %></h1>
<h2><%= subtitle %></h2>
<% end %>