3

我正在开发 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”或指定(输入)值(如果选择“Other”)。

4

2 回答 2

1

简单的表格让你我们as: :radio_buttons在一个集合上,就像这样

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

有关集合输入的更多信息,请参阅SimpleForm README 的集合部分。

于 2015-09-04T00:53:22.030 回答
0

一种解决方案是让 f.collection_radio_buttons 后跟 f.input,两者都具有相同的名称。然后,使用 jquery 或 javascript 根据所选单选按钮选择性地启用 f.input。为此,您可能还想添加一个 ['Other']['Other'] 选项。

编辑也许是这样的:

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 将使用最后一个值(如果启用,则在本例中为文本字段),否则它将使用选定的单选按钮。

于 2015-09-04T00:44:52.937 回答