以简单的形式,我有几个单选按钮。对于单选按钮标签,我想在标签的一部分添加span css,使其看起来像这样:
30 days <strong>for only 30 bucks </strong>
我的输入是这样的:
<%= f.input :duration, :label => "Duration: ",
:collection => Payment::OPTIONS,
:label_method => lambda { |a| a.first.to_s + " days for only" + a.last.to_s + " $ " } ,
:value_method => lambda { |a| a.first.to_s + "-" + a.last.to_s } ,
:as => :radio %>
是否可以仅将css添加到"for only" + a.last.to_s + " $ "
答案 0 :(得分:1)
使用字符串插值,我会从
开始:label_method => lambda { |a| "#{a.first} days for only #{a.last} $" } ,
:value_method => lambda { |a| "#{a.first} - #{a.last}" } ,
你可以改进你的变量名,首先和最后看起来有点令人困惑,我认为你会使用duration
和price
之类的东西。
现在我们仍然必须修复span
,你问一个跨度,但在你的例子中你写<strong>
,我假设混淆了俄国人,所以让我们举个例子吧。所以要解决我们写的问题:
:label_method => lambda { |a| "#{a.first} days <strong>for only #{a.last} $</strong>".html_safe } ,
我们可以在字符串中编写html,但是我们必须确保告诉渲染器该字符串可以被视为“安全”并且不需要再次转义(否则你只会看到标记在风景)。这就是为什么需要添加.html_safe()
。
现在要非常干净,我会把它变成一个帮手。所以在<your-resource-name>Helper
添加
def long_duration_label(payment_option)
""#{payment_option.duration} days <strong>for only #{payment_option.price}$</strong>".html_safe
end
并且在您看来,这变成了
:label_method => lambda { |payment_option| long_duration_label(payment_option) },