滑过多个单选按钮

时间:2018-10-05 09:28:01

标签: ruby-on-rails

我有一个名为items的表和三个布尔列fixed_amount, no_price, per_hour

如何将以上三列中的radio buttons添加到表单中,以便在选择了其中一列的情况下提交为true,而在其余未选择的列中为false?我希望单选按钮能够从一个切换到另一个,而不是选择全部三个。

目前,我正在尝试以下操作,但没有任何运气:

<%= form.radio_button :no_price, '1', checked: true %>
<%= form.radio_button :fixed_amount, '1' %>
<%= form.radio_button :per_hour, '1' %>

2 个答案:

答案 0 :(得分:1)

要使单选按钮彼此取消切换,它们必须具有相同的名称。像

<%= radio_button_tag :price_option, 'no_price', checked: model.no_price? %>
<%= radio_button_tag :price_option, 'fixed_amount', checked: model.fixed_amount? %>
...

然后您将在params[:price_option]中收到所选选项,并相应地设置模型。

答案 1 :(得分:1)

我将使用枚举而不是单独的列,这是更容易且在逻辑上更正确的方法:例如

enum pricing_option: { no_price: 0, fixed_amount: 1, per_hour: 2 }

在视图中:

<%= collection_radio_buttons(:foo, :pricing_option, Foo.pricing_options, :first, :first)%>