在Rails中使用select in表单进行new和edit

时间:2014-07-14 17:26:26

标签: ruby-on-rails ruby-on-rails-4.1

Rails 4.1
Ruby 2.1.1

在我的助手/ roles_helper.rb中,我有:

def roles_list_generator
  roles = Role.all.order(:role)
  if roles
    roles_matrix = [['','']]
    roles.each do |r|
      roles_matrix << [r.description,r.role]
    end
    return roles_matrix
  end
end

然后,我可以在我的views / users / form.html.erb中使用它:

    <%= f.select :role, options_for_select(roles_list_generator) %> 

当我查看新内容时会呈现的内容:views / users / new.html.erb:

<%= render 'form' %>

问题在于我无法再使用views / users / edit.html.erb形成.jpg.erb。

我确实尝试过:

<%= f.select :role, options_for_select(roles_list_generator), :selected => @user.role %>

但那不起作用

解决方案:

这将是int form.html.erb:

<%= f.select :role, options_for_select(roles_list_generator, @user.role) %>

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

尝试

f.collection_select :role, Role.all.order(:role), :id, :description

然后您可以尝试使用自定义方法 - 添加提示符:true。这将消除填充空条目的需要。

f.collection_select :role, Role.all.order(:role), :id, :description, prompt: true

以下是文档: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select