在label_method的simple_form部分css中

时间:2014-06-08 12:11:03

标签: css ruby-on-rails ruby ruby-on-rails-3 simple-form

以简单的形式,我有几个单选按钮。对于单选按钮标签,我想在标签的一部分添加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 + " $ "

部分

1 个答案:

答案 0 :(得分:1)

使用字符串插值,我会从

开始
:label_method => lambda { |a| "#{a.first} days for only #{a.last} $" } ,
:value_method => lambda { |a| "#{a.first} - #{a.last}" } , 

你可以改进你的变量名,首先和最后看起来有点令人困惑,我认为你会使用durationprice之类的东西。

现在我们仍然必须修复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) },