帮助中的link_to与块
我试图让这个工作:
link_to("#", class: "add_fields btn btn-success") do name content_tag(:i, "", :class => "icon-plus icon-white") end
但它只显示我指定的图标(twitter-bootstrap css)而不是name
的文字,我做错了什么?
块的返回值成为其内容。 只返回最后一行。
您必须将两个字符串连接在一起以生成一个返回值:
link_to("#", class: "add_fields btn btn-success") do name + content_tag(:i, "", class: "icon-plus icon-white") end
您需要使用html_safe
来阻止标记内容自动进行HTML编码:
link_to("#", class: "add_fields btn btn-success") do name + content_tag(:i, "", class: "icon-plus icon-white").html_safe end
根据Twitter Bootstrap的个人经验,我知道你需要在name
和content_tag
之间content_tag
一个空格:
link_to("#", class: "add_fields btn btn-success") do name + ' ' + content_tag(:i, "", class: "icon-plus icon-white").html_safe end
或者,如果您在ERB模板中,则可以使用<%=
输出两个值:
<%= link_to( ... ) do %> <%= name %> <%= content_tag( ... ) %> <% end %>
我要考虑两件事:
1)需要对link_to
块的全部内容进行清理。
link_to("#", class: "add_fields btn btn-success") do (name + content_tag(:i, "", class: "icon-plus icon-white")).html_safe end
2)我们可以期望输入nil
吗?
如果我们在一个nil
对象上调用html_safe
,事情就会破裂。 如果有可能发生这种情况,请使用raw
。
link_to("#", class: "add_fields btn btn-success") do raw(name + content_tag(:i, "", class: "icon-plus icon-white")) end
这是一个关于这个主题的好读物。 我的博客文章提供了一个有趣的应用程序。
对于那些使用font-awesome或其他东西的人来说,它可能不会显示图标。 但这个解决方案有效。
link_to :sort => column, :direction => direction do "#{title} #{content_tag(:i, "", class: "fa fa-chevron-up") }".html_safe end