Ruby on Rails - 在包含I18n的link_to调用中嵌入了额外的HTML

时间:2012-04-02 13:50:18

标签: ruby-on-rails ruby-on-rails-3 internationalization icons twitter-bootstrap

我正在尝试在link_to调用中嵌入其他HTML,如此帖子Embed additional HTML inside of link_to call

中所示

但是,我还想使用I18n。所以不要这样:

 <%= link_to '<i class="icon-search"></i> Show'.html_safe, exercise_path(exercise), :class => 'btn btn-small' %>

我想在上面的示例中使用t(:show)I18n.t(:show)而不是硬编码的Show。但是,我无法弄清楚正确的语法。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:9)

通过使用块语法,可以更轻松/更清晰地将其他项嵌入link_to。 E.x。

<%= link_to exercise_path(exercise), :class => 'btn btn-small' do %>
  <i class="icon-search"></i>
  <%= t(:show).html_safe %>
<% end %>

答案 1 :(得分:0)

<%= link_to "<i class='icon-search'></i> #{t(:show)}".html_safe, exercise_path(exercise), :class => 'btn btn-small' %>

使用#{}在字符串中嵌入ruby代码。

答案 2 :(得分:0)

使用原始功能,如下例

<%= link_to raw("<i class='icon-search'>some italic text </i> #{t(:show)}"), exercise_path(exercise), :class => 'btn btn-small' %>