我正试图通过best_in_place直接在索引页面上控制我的用户管理。但是在选择这个角色时,它至今都不适用于我。
我的模特看起来像这样:
class User < ActiveRecord::Base
belongs_to :role
before_create :set_default_role
def set_default_role
self.role ||= Role.find_by_name('Guest')
end
end
class Role < ActiveRecord::Base
has_many :users
has_and_belongs_to_many :permissions
accepts_nested_attributes_for :users, :permissions
end
到目前为止,我所做的是尝试选择外键role_id
而不是集合选择,但我无法使其工作,我在选择下拉列表中看到了现有角色的名称。
<td><%= best_in_place user, :role_id, :type => :select, :collection => "???" %></td>
希望有人可以提供帮助。
祝你好运!
修改: user_controller.rb
class UsersController < ApplicationController
before_action :set_user, only: [:show, :update, :destroy]
def index
@users = User.all
end
def show
end
def update
@user.update_attributes(user_params)
respond_with @user
end
private
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(:role_id)
end
end
答案 0 :(得分:4)
这应该对你有用
<%= best_in_place user, :role_id, :type => :select, :collection => Role.all.map { |i| [i.id, i.name] } %>
更多信息 here