Rails 4 - 显示选项作为单选按钮

时间:2015-08-18 23:18:24

标签: ruby-on-rails ruby-on-rails-4 simple-form simple-form-for

我正在开发一个Rails 4应用程序,使用simple_form进行输入。有几个模型字段可以采用众所周知的答案或自由形式的答案。例如,对于字段fruit:string,我想显示"Apple""Banana""Other"。如果用户选择"Other",则可以输入任何自由格式文本。目前,我所能做的就是使用<%= f.input :fruit %>并显示一个空白文本框。是否可以显示单选按钮?我能做到

<%= f.collection_radio_buttons :fruit, [["Apple", "Apple"], ["Banana", "Banana"]], :first, :last %>

但是没有提供“其他”选项。如果选择“其他”,目标是记录“Apple”,“Banana”或指定的(键入的)值。

2 个答案:

答案 0 :(得分:1)

简单表单允许我们as: :radio_buttons集合,如此

<%= f.input :fruit, collection: ['apple', 'banana', 'other'], as: :radio_buttons %> 

有关集合输入的详细信息,请参阅collection section of the SimpleForm README

答案 1 :(得分:0)

一种解决方案是使f.collection_radio_buttons后跟f.input,两者都具有相同的名称。然后,使用jquery或javascript选择性地启用基于所选单选按钮的f.input。为此,您可能还需要添加[&#39;其他&#39;] [&#39;其他&#39;]选项。

EDIT 也许是这些方面的东西:

f.collection_radio_buttons :fruit, [['Apple','Apple'],['Orange','Orange'],['Other','Other']], :first, :last
f.text_field :fruit


$("input:radio[name='foo[fruit]']").change(function(){
  if($(this).val() == 'Other'){
    $("input:text[name='foo[fruit]']").show().prop( "disabled", false);
  }else{
    $("input:text[name='foo[fruit]']").hide().prop( "disabled", true );
  }});

因为它们具有相同的名称,Rails将使用最后一个值(在这种情况下,如果启用了文本字段),否则它将使用所选的单选按钮。