4

嗨,我试图改变如下:更改options_for_select以单选按钮

.form-group 
    = label_tag :metric, 'Metric', class: 'sr-only' 
    = select_tag :metric, options_for_select(Report::METRICS, selected: @report.metric), class: 'form-control' 

像下面的内容:

.form-group.pull-left 
     = label_tag :metric, 'Metric', class: 'sr-only' 
     .btn-group{"data-toggle" => "buttons"} 
      %label.btn.btn-default.active 
      %input#option1{name: "options", type: "radio", value: "value1"}/ 
      Value1 
      %label.btn.btn-default 
      %input#option2{name: "options", type: "radio", value: "value2"}/ 
      Value2 

然而,问题是,当我提交表单,它实际上并没有提交单选按钮值。同样在提交之后,当它保持在选定的单选按钮上时,它默认回到没有选择。

回答

1

您可以使用radio_button_tag帮助程序并正确设置checked参数。

使用您的例子,它是这样的:

.form-group.pull-left 
    = label_tag :metric, 'Metric', class: 'sr-only' 
    .btn-group{"data-toggle" => "buttons"} 
     %label.btn.btn-default.active 
     = radio_button_tag('options', 'value1', params[:options] == 'value1') 
     Value1 
     %label.btn.btn-default 
     = radio_button_tag('options', 'value2', params[:options] == 'value2') 
     Value2 
+0

这是非常接近。它仍然会使页面重新加载事件时,第一个单选按钮处于活动状态,尽管:options现在在页面上反映了其他内容 – locoboy

+0

我认为我们需要以某种方式动态地将'.active'类别分配给与表单一起提交的按钮。有关如何做到这一点的任何想法? – locoboy

+0

实际上已经想通了 - 只是使用js端的addClass()。 – locoboy