Best_in_place集合1到多个关联

时间:2014-07-14 07:23:04

标签: ruby-on-rails-4 associations best-in-place

我正试图通过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

1 个答案:

答案 0 :(得分:4)

这应该对你有用

<%= best_in_place user, :role_id, :type => :select, :collection => Role.all.map { |i| [i.id, i.name] } %>

更多信息 here