Rails radioknoppen - één keuze voor meerdere kolommen in op model

Ik wil dat de gebruiker één optie uit drie kiest voor één model.

D.w.z. Ik heb een modelvideo, die kan worden beoordeeld als positief/negatief/onbekend

Momenteel heb ik drie kolommen met booleaanse waarden (pos/neg/onbekend).

Is dit de beste manier om met deze situatie om te gaan?

Hoe ziet de vorm eruit?

Momenteel heb ik zoiets als

<%= 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' %>

Maar het staat natuurlijk meerdere selecties toe, terwijl ik het probeer te beperken tot slechts één ..

Wat te doen?

5

2 antwoord

Als zou gaan met een string kolom laten we zeggen rating .

dan in jouw vorm:

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

Het staat slechts één selectie toe

edit The exact same but using radio_button_tag:

<%= radio_button_tag 'rating', 'unknown', true %>
<%= radio_button_tag 'rating', 'positive' %>
<%= radio_button_tag 'rating', 'negative' %>
9
toegevoegd
Ik deed precies dat (veranderde de kolom voor reeks) en zette dat vorm in en ik krijg deze fout: ongedefinieerde methode `positief? ' voor #
toegevoegd de auteur Stpn, de bron
<< lol, het was vanuit een ander oogpunt ..
toegevoegd de auteur Stpn, de bron

Ik denk dat je zoiets als dit nodig hebt:

<%= 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' %>

Hier hebben alle keuzerondjes hetzelfde attribuut naam (dat is 'rating' ) maar hebben ze een ander attribuut waarde ( 'positief ',' negatief 'en' onbekend ' respectievelijk). In de laatste parameter geeft u true of false door om een ​​van de geselecteerde te markeren.

1
toegevoegd