我在表单中有一个选择选项:
<%= f.select :role, options_for_select(User.roles.keys.to_a, params[:role]), {}, class: 'form-control form-control-lg roleSelect' %>
这些角色在我的模型中定义:
enum role: {user: 0, profile_user: 1}
现在,在我的下拉列表中,当用户选择时,它会显示 user
和 profile_user
作为下拉选项。
有没有办法在下拉列表中显示另一个值来表示这些值?
例如:
在下拉菜单中,我宁愿显示“我是一名教师”,它映射到用户
。
在下拉菜单中,我宁愿显示“我来这里学习”,它映射到profile_user
。
最佳答案
在您的模型中添加叙述性描述。
NARRATIVE_ROLES = {user: 'I am a teacher', profile_user: 'I am here to learn'}
添加一个方法来创建 select_array
def self.roles_select
User.roles.keys.map {|role| [NARRATIVE_ROLES[role], role]}
end
然后在您使用的选择中
options_for_select(User.roles_select, params[:role])
或者(稍微简单一些)
NARRATIVE_ROLES = {'I am a teacher' => :user, 'I am here to learn' => :profile_user}
options_for_select(User::NARRATIVE_ROLES, params[:role])
关于ruby-on-rails - Rails 选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48131815/