Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在表单中显示可枚举属性的选项?_Ruby On Rails_Enums_Erb - Fatal编程技术网

Ruby on rails 如何在表单中显示可枚举属性的选项?

Ruby on rails 如何在表单中显示可枚举属性的选项?,ruby-on-rails,enums,erb,Ruby On Rails,Enums,Erb,如果我有一个模型,其中一个属性只能设置为几个预定义值,如下所示: class Painting < ActiveRecord::Base SALE_STATUS = ["for sale", "sold"] validates_inclusion_of :status, :in => SALE_STATUS end <%= form_for @painting do |painting| %> <% Painting::SALE_STATUS.each

如果我有一个模型,其中一个属性只能设置为几个预定义值,如下所示:

class Painting < ActiveRecord::Base
  SALE_STATUS = ["for sale", "sold"]
  validates_inclusion_of :status, :in => SALE_STATUS
end
<%= form_for @painting do |painting| %>
  <% Painting::SALE_STATUS.each do |sale_status| %>
    <%= painting.check_box :status, sale_status %>
  <% end %>
<% end %>

谢谢您的时间。

我想您可以这样做:

class Painting < ActiveRecord::Base
  SALE_STATUS = ["for sale", "sold"]
  validates_inclusion_of :status, :in => SALE_STATUS
end
<%= form_for @painting do |painting| %>
  <% Painting::SALE_STATUS.each do |sale_status| %>
    <%= painting.check_box :status, sale_status %>
  <% end %>
<% end %>
如果不是,请使用单选按钮:

<%= form_for @painting do |painting| %>
  <% Painting::SALE_STATUS.each do |sale_status| %>
    <%= painting.radio_button :status, sale_status %>
  <% end %>
<% end %>


我试了一下!但是,将
:value=>
设置为
sale\u status
似乎不会更改复选框提交的值;所有框返回的值均为“1”,而不是“待售”或“已售出”:
请尝试以下操作:
(与复选框相同)正常工作,谢谢您的帮助。确保我理解这一点-单选按钮或复选框的第二个参数决定提交哪个值?这对我来说有点让人困惑。是的,文档让人困惑,因为它讨论的是helper方法
复选框
,而不是
f.check\u框
(其中
f
来自
的表单)。您不需要第一个参数“object\u name”,因为您正在将表单\u用于对象
@painting