我有一个部分用于整个网站。我在部分中有一个图像,我希望链接到除一个特定控制器操作之外的所有页面上的某个页面。
1。如果没有2 if else设置,是否有办法放入以下href?...
<a href="#">
<img src="#" />
</a>
我试图避免这样做:
<% if (current controller != xyz) %>
<a href="#">
<% end %>
<img src="#" />
<% if (current controller != xyz) %>
</a>
<% end %>
2。如何实际检查哪个控制器称为此部分?
上面的代码只是伪代码。
PS。我知道这不是那么多重复,但我只是以这个简化的案例为例。好奇如果在Rails中有什么东西我不知道要避免这种情况。
答案 0 :(得分:11)
这正是link_to_if
的用途!
link_to_if(controller_name == 'xyz', image_tag('src'), 'http://target.com')
这将添加图像条件是否为真,并且仅在条件为真时将其包装在链接中。还有相关的link_to_unless
,在您的情况下可能在语义上更合适。
编辑:我已更新上面的示例,使用正确的代码检查控制器名称。视图中有一个方法controller_name
,它返回控制器名称的小写版本。它也在params
哈希。
答案 1 :(得分:1)
归结为这个问题:“你想要复制什么”。
在您的问题中,您复制if测试。在一个反例(下面)中,我将复制img标签。
反例
<% if (current controller != xyz) %>
<a href="#">
<img src="#"/>
</a>
<% end %>
<% if (current controller == xyz) %>
<img src="#"/>
<% end %>
我的偏好是复制最不可能改变的东西,当我不知道哪个最不可能改变时,则默认为最短的复制量。
最短的目的是含糊不清。所写的图像标签似乎是最短的,但我怀疑if部分通常是最短的。