/ / Релси 4 - Показване на избор като радио бутони - рубин на релси, рубин на релси-4, проста форма, проста форма за

Релси 4 - Избор на дисплей като радио бутони - рубинка на релси, рубинка на релси-4, проста форма, проста форма

Работя върху приложение 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".

Отговори:

1 за отговор № 1

Simple Form ви позволява да ни as: :radio_buttons върху колекция, така е

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

Вижте раздел за събиране на SimpleForm README за повече информация относно данните за събиране.


0 за отговор № 2

Едно решение би било да има f.collection_radio_buttons, последвани от f.input, и двете със същото име. След това избирателно активирайте f.input въз основа на избрания радио бутон с jquery или javascript. За да работи това, вероятно бихте искали да добавите и опция ["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 ще използва последната стойност (текстовото поле в този случай, ако е активирано), в противен случай ще използва избрания радио бутон.