Ruby on rails 想要rails simple_form单选按钮显示';这不是价值

Ruby on rails 想要rails simple_form单选按钮显示';这不是价值,ruby-on-rails,forms,radio-button,simple-form,Ruby On Rails,Forms,Radio Button,Simple Form,我正在使用simple_form gem创建一些输入字段;其中一个是单选按钮组,如下所示: <%= f.input :due_date, :collection => ['Today', 'Tomorrow', 'In 3 Days'], :as => :radio %> [‘今天’、‘明天’、‘三天后’],:as=>:radio%> 所以数据库“到期日”中的这个字段是一个日期。但我们知道,人们通常只想要这三个选项,而不是让人们点击那个小小的日历。我想用单选按钮。但是

我正在使用simple_form gem创建一些输入字段;其中一个是单选按钮组,如下所示:

<%= f.input :due_date, :collection => ['Today', 'Tomorrow', 'In 3 Days'], :as => :radio %>
[‘今天’、‘明天’、‘三天后’],:as=>:radio%>
所以数据库“到期日”中的这个字段是一个日期。但我们知道,人们通常只想要这三个选项,而不是让人们点击那个小小的日历。我想用单选按钮。但是这一行的输出表明,如果我现在点击submit按钮,due_date参数将具有此处所述的值,即今天、明天或3天后。下面是今天部分的输出HTML

<span>
<input class="radio optional" id="project_due_date_today" name="project[due_date]" type="radio" value="Today">
<label class="collection_radio" for="project_due_date_today">Today</label>
</span>

今天
理想情况下,我想要的是:

<%= f.input :due_date, :collection_to_params => [Date.today, Date.tomorrow, Date.today+3], :display_value => ['Today', 'Tomorrow', 'In 3 Days'], :as => :radio %>
[Date.today,Date.today,Date.today+3],:display_value=>[“今天”、“明天”、“三天内”],:as=>:radio%>
因此,当用户单击一个并提交时,我实际上会将一些ISO日期发送到服务器

有什么想法吗

谢谢

[[Date.today,'today'],[Date.moody,'moody'],[Date.today+3,'in3天]],
<%= f.input :due_date, 
:collection => [[Date.today, 'Today'], [Date.tomorrow, 'Tomorrow'], [Date.today+3, 'In 3 Days']], 
:label_method => :last, 
:value_method => :first, 
:as => :radio_buttons %>
:label_method=>:last, :value_method=>:首先, :as=>:单选按钮%>

因此,您可以将数组数组传递给集合散列,然后可以传递另外两个选项来指定此输入的值和此输入的可见标签,它们被正确命名为label_method和VALUE_method。单词method是,调用相关集合的单个项以检索标签或值的方法。在数组的数组中,array.first是我的值,array.last是我的标签。因此上面的代码

这是我从Nik So的答案中得到的,并应用了所有注释:

<%= f.input :due_date, 
collection: [['Today', Date.today], ['Tomorrow', Date.tomorrow], ['In 3 Days', Date.today+3]],
as: :radio_buttons %>


我没有使用过
simple\u form
,但通常使用Rails时,值得尝试散列:
:collection=>{'Today'=>Date.Today,'tomorday'=>Date.tomorday,'in3 Days'=>Date.Today+3}
嘿,Alex,谢谢你的输入,我会记住这一点,但我已经找到了简单的答案。注意,不推荐使用
单选按钮
,并将其替换为
单选按钮
。为什么不使用
['Today',Date.Today]
而不使用不必要的参数,例如
标签方法
值方法
,默认分别为
第一个
最后一个
?!如果Olexandr所说的不明显,只需颠倒每个集合项的顺序(即[Date.Today',Date.Today]而不是[Date.Today',Today']),现在您不需要指定:label_方法和:value_方法。您还可以编写:
现在您还需要使用新语法
as::radio_按钮