Ruby on rails 在表单_标记中使用带有select的枚举
user.rb 用户控制器 index.html.erb 最终目标是: example.com/users?gender\u type=0或example.com/users?gender\u type=1 试试那种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来找到解决方案 试
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 %>