2

我想在這個線程發現Embed additional HTML inside of link_to callRuby on Rails的 - 嵌入其他HTML的link_to調用包含的I18n

但是嵌入的link_to調用內部的其他HTML,我也想用的I18n內。因此,而不是這樣的:

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

我想在上面的例子中使用t(:show)I18n.t(:show)而不是硬編碼Show。不過,我無法找出正確的語法。任何幫助將不勝感激。

回答

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 %> 
0

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

使用#{}嵌入在字符串Ruby代碼。

+0

低於謝謝你,但是當我使用雙引號作爲你的答案,我得到一個語法錯誤,如果我使用單引號用'<%= link_to'#{t(:show)}'。html_safe,exercise_path(exercise),:class =>'btn btn-small'%>',嵌入式ruby沒有工作。任何想法我做錯了什麼? – diasks2 2012-04-02 14:05:09

+0

對不起,對於我的解決方案的工作,你需要用單引號做'class ='icon-search''。但johnernaut的答案是更好的;)我不認爲你需要在他的答案html_safe。 – Robin 2012-04-02 14:56:07

0

使用原始功能,正如例如

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