Переключатели Rails - один выбор для нескольких колонок в модели - PullRequest
5 голосов
/ 06 декабря 2011

Я хочу, чтобы пользователь выбрал один вариант из трех для одной модели.

Т.е. у меня есть модель Видео, которое можно оценить как положительное / отрицательное / неизвестное

В настоящее время у меня есть тристолбцы с логическими значениями (pos / neg / unknown).

Это лучший способ справиться с этой ситуацией?

Как должна выглядеть форма для этого?

В настоящее время у меня есть что-то вроде

<%= radio_button_tag :positive, @word.positive, false %> 
<%= label_tag :positive, 'Positive' %>
<%= radio_button_tag :negative, @word.negative, false %> 
<%= label_tag :negative, 'Positive' %>
<%= radio_button_tag :unknown, @word.unknown, false %> 
<%= label_tag :unknown, 'Positive' %>

Но, очевидно, он допускает несколько выборок, в то время как я пытаюсь ограничить его дотолько один ..

Что делать?

Ответы [ 2 ]

9 голосов
/ 06 декабря 2011

Если бы идти со строковым столбцом, скажем, rating.

тогда в вашей форме:

# ...
<%= f.radio_button :rating, 'unknown', checked: true %>
<%= f.radio_button :rating, 'positive' %>
<%= f.radio_button :rating, 'negative' %>
# ...

Допускается только один выбор

edit Точно так же, но с использованием radio_button_tag:

<%= radio_button_tag 'rating', 'unknown', true %>
<%= radio_button_tag 'rating', 'positive' %>
<%= radio_button_tag 'rating', 'negative' %>
1 голос
/ 06 декабря 2011

Я думаю, вам нужно что-то вроде этого:

<%= radio_button_tag :rating, 'positive', @word.rating == :positive %> 
<%= label_tag :positive, 'Positive' %>
<%= radio_button_tag :rating, 'negative', @word.rating == :negative %> 
<%= label_tag :negative, 'Positive' %>
<%= radio_button_tag :rating, 'unknown', @word.rating == :unknown %> 
<%= label_tag :unknown, 'Positive' %>

Здесь все переключатели будут иметь одинаковый атрибут name (то есть 'rating'), но будут иметь различный атрибут value ('positive', 'negative' and 'unknown' соответственно). В последнем параметре вы передаете true или false, чтобы пометить один из них как выбранный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...