2014-07-14 43 views
2

我試圖能夠通過best_in_place直接在索引頁面上控制我的usermanagement。但是說到選擇角色,到現在爲止它並不適合我。Best_in_place collection 1 to many association

我的模式是這樣的:

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

您可以發佈您的控制器代碼? – Pavan

+0

你可以在上面看到它! – Syk

+0

試試這個'<%​​= best_in_place user,:role_id,:type =>:select,:collection => @ users.map {| i | [i.id,i.name]}%>' – Pavan

回答

3

這應該工作,你

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

更多信息here

+0

謝謝,它適用於我:) – SSR