【发布时间】:2016-04-04 14:06:26
【问题描述】:
将具有有限数量有效值的整数属性表示为单选按钮的最简单方法是什么?
如何使用 formhelper 来实现这一点?我只看到使用字符串值的示例。
【问题讨论】:
标签: ruby-on-rails ruby button integer radio
将具有有限数量有效值的整数属性表示为单选按钮的最简单方法是什么?
如何使用 formhelper 来实现这一点?我只看到使用字符串值的示例。
【问题讨论】:
标签: ruby-on-rails ruby button integer radio
你可以试试
<%= form_for :model do |f| %>
<% 1.upto(10) do |i| %>
<%= f.radio_button :integer, i %> #integer is the model field
<% end %>
<% end %>
或
<%= form_tag do %>
<% 1.upto(10) do |i| %>
<%= radio_button_tag :name, i %>
<% end %>
<% end %>
【讨论】:
类似:
<% (1..10).each do |value| %>
<%= f.radio_button_tag(:method_name, value) %>
<% end %>
(1..10) 可能作为常数属于模型。还有什么让验证更容易:
# 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 %>
【讨论】:
我的方法是在你的模型中使用枚举。例如,如果角色是投资者,角色字段将保存为数字 0,如果角色是交易者,则在我的示例中,角色字段将保存为数字 1。
你需要像这样在你的模型 .rb 文件中声明你的枚举:
enum role: [:investor,:trader]
然后在视图文件中:
<%= 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' %>
【讨论】: