Was ist der einfachste Weg, ein ganzzahliges Attribut mit einer begrenzten Anzahl gültiger Werte als Optionsfelder darzustellen?
Wie kann ich den Formhelper verwenden, um dies zu erreichen? Ich sehe nur Beispiele, die Zeichenfolgenwerte verwenden.
3 Antworten
Du kannst es versuchen
<%= form_for :model do |f| %>
<% 1.upto(10) do |i| %>
<%= f.radio_button :integer, i %> #integer is the model field
<% end %>
<% end %>
Oder
<%= form_tag do %>
<% 1.upto(10) do |i| %>
<%= radio_button_tag :name, i %>
<% end %>
<% end %>
Etwas wie:
<% (1..10).each do |value| %>
<%= f.radio_button_tag(:method_name, value) %>
<% end %>
Wobei (1..10)
als Konstante in das Modell gehören könnte. Was erleichtert auch die Validierung:
# in the model
FOOS = (1..10)
validates :foo, inclusion: { in: FOOS }
# in the view
<% Model::FOOS.each do |values| %>
<%= f.radio_button_tag(:foo, value) %>
<% end %>
Mein Weg ist es, eine Aufzählung in Ihrem Modell zu verwenden. Zum Beispiel wird das Rollenfeld als Nummer 0 gespeichert, wenn die Rolle Investor ist, Nummer 1, wenn die Rolle in meinem Beispiel Händler ist.
Sie müssen Ihre Aufzählung in Ihrer .rb-Modelldatei wie folgt deklarieren:
enum role: [:investor,:trader]
Dann in der Ansichtsdatei:
<%= f.radio_button :role, :investor , class: 'form-control underlined' %>
<%= label :role_investor, 'I wanna be an investor' %>
<%= f.radio_button :role, :trader , class: 'form-control underlined' %>
<%= label :role_trader, 'I wanna be a trader' %>
Verwandte Fragen
Neue Fragen
ruby-on-rails
Ruby on Rails ist ein Open Source-Webanwendungsframework mit vollem Stapel, das in Ruby geschrieben wurde. Es folgt dem beliebten MVC-Framework-Modell und ist bekannt für seinen "Convention over Configuration" -Ansatz für die Anwendungsentwicklung.