Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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 在表单_标记中使用带有select的枚举_Ruby On Rails_Enums - Fatal编程技术网

Ruby on rails 在表单_标记中使用带有select的枚举

Ruby on rails 在表单_标记中使用带有select的枚举,ruby-on-rails,enums,Ruby On Rails,Enums,user.rb 用户控制器 index.html.erb 最终目标是: example.com/users?gender\u type=0或example.com/users?gender\u type=1 试试那种 select_tag 'gender', "<option value=0>male</option><option value=1>female</option>".html_safe 您可以阅读RailsAPI来找到解决方案 试

user.rb

用户控制器

index.html.erb

最终目标是:

example.com/users?gender\u type=0或example.com/users?gender\u type=1

试试那种

select_tag 'gender', "<option value=0>male</option><option value=1>female</option>".html_safe
您可以阅读RailsAPI来找到解决方案 试试那种

select_tag 'gender', "<option value=0>male</option><option value=1>female</option>".html_safe
您可以阅读RailsAPI来找到解决方案

我假设您输入的文件名users.rb有误,并且它是一个普通的user.rb型号

User.gender_类型将返回哈希{male=>0,female=>1}。听起来很简单


选择标签:性别类型,选择用户的选项。性别类型

我假设您在文件名users.rb中输入错误,并且它是一个常规的user.rb模型

User.gender_类型将返回哈希{male=>0,female=>1}。听起来很简单


选择标签:性别类型,选择用户的选项。性别类型要从枚举属性获取映射,可以:

您可以调用Hash.to_a来获取一个对数组,您可以将该数组传递给选项_以进行选择。但您可能需要使用.map来转换关键点

class User
  self.gender_options
    # or use the I18n module to humanize the keys
    self.gender_types.map { |k,v| [k.capitalize, v] }
  end
end

<%= select_tag 'gender', options_for_select(User.gender_options) %>

要从枚举属性获取映射,可以:

您可以调用Hash.to_a来获取一个对数组,您可以将该数组传递给选项_以进行选择。但您可能需要使用.map来转换关键点

class User
  self.gender_options
    # or use the I18n module to humanize the keys
    self.gender_types.map { |k,v| [k.capitalize, v] }
  end
end

<%= select_tag 'gender', options_for_select(User.gender_options) %>

你可以这样简单地使用

<%= form_for(user) do |form| %>
    <%= form.select :gender_types, User.gender_types.keys.to_a %>
<% end %>


你可以这样简单地使用

<%= form_for(user) do |form| %>
    <%= form.select :gender_types, User.gender_types.keys.to_a %>
<% end %>


谢谢是的,我有点好奇,如果可能的话,如何不手动列出它们以供将来参考,因为下次可能有两个以上的选项。如果没有人给出这个答案,我会接受的。谢谢。是的,我有点好奇,如果可能的话,如何不手动列出它们以供将来参考,因为下次可能有两个以上的选项。如果没有人给出这个答案,我会接受的。我得到了这个错误。ActionView::Template::Error未定义的方法状态:也应该是:gender\u type not:genderOh right,my bad,更新了答案。您需要调用传入enum的单词的多元化版本。您想运行User.gender_types。这导致{male=>0,female=>1}被传递到选择选项中。马克斯解决了这个问题唉,我应该在这里多加注意。再次更新答案,忘记了选择呼叫的选项。我收到此错误。ActionView::Template::Error未定义的方法状态:也应该是:gender\u type not:genderOh right,my bad,更新了答案。您需要调用传入enum的单词的多元化版本。您想运行User.gender_types。这导致{male=>0,female=>1}被传递到选择选项中。马克斯解决了这个问题唉,我应该在这里多加注意。再次更新了答案,忘记了选择呼叫的选项。谢谢。应该是self.gender\u types.map和:gender\u type谢谢。它应该是self.gender\u types.map和:gender\u type
class User
  self.gender_options
    # or use the I18n module to humanize the keys
    self.gender_types.map { |k,v| [k.capitalize, v] }
  end
end

<%= select_tag 'gender', options_for_select(User.gender_options) %>
<%= form_for(user) do |form| %>
    <%= form.select :gender_types, User.gender_types.keys.to_a %>
<% end %>
# app/helpers/users_helper.rb
def genders_select
  User.gender_types.map do |k,v|
    [User.human_enum_name(:gender_types, k), v]
  end
end
<%= form_for(user) do |form| %>
    <%= form.select :gender_types, @genders_select %>
<% end %>