2014-07-14 4 views
2

J'essaie de contrôler mon administration directement sur la page d'index avec best_in_place. Mais quand il s'agit de choisir le rôle, ça ne marche pas pour moi jusqu'à maintenant.Best_in_place collection 1 à plusieurs association

Mes modèles ressemblent à ceci:

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 

Ce que je l'ai fait jusqu'à présent essaie de sélectionner la role_id clé étrangère sur collection choisie mais je ne peux pas le faire fonctionner que je vois les noms des rôles existants dans ma sélection menu déroulant.

<td><%= best_in_place user, :role_id, :type => :select, :collection => "???" %></td> 

Espérons que quelqu'un puisse vous aider.

Meilleures salutations!

Edit: 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

Pouvez-vous envoyer votre code de contrôleur? – Pavan

+0

Vous pouvez le voir ci-dessus maintenant! – Syk

+0

Essayez cet utilisateur <% = best_in_place,: role_id,: type =>: select,: collection => @ users.map {| i | [i.id, i.name]}%> ' – Pavan

Répondre

3

Cela devrait fonctionner pour vous

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

Plus d'info here

+0

Merci, ça marche pour moi :) – SSR

Questions connexes