2010-06-29 9 views
0

Directeur :has_many:interns, :through => :assigns
Stagiaire :has_many:managers, :through => :assignsRails collection_select

Je suis en train de créer un nouveau assign enregistrement. Ceci est Cédant/nouvelle vue dans laquelle un stagiaire donné authentifiées crée une nouvelle association avec un gestionnaire :

# assigns/new.html.erb 
<% form_for @assign, :url => {:action => "create"} do |p| %> 
    <%= p.label "Select Manager", nil, :class => "label" %> 
    <%= collection_select :assign, :manager_id, @managers, :id, :manager_name, options ={:prompt => "Select a manager"}, html_options ={:class =>"listBox", :style => "width:25em;"} %> 
    <%= p.hidden_field :intern_id %> 
<% end %> 

# assigns controller 
def new 
    @intern = Intern.find(params[:id]) 
    @assign = Assign.new(:intern_id => @intern.id) 
    render :layout => 'centered' 
end 

def create 
    @assign = Assign.new(params[:assign]) 
    @assign.manager_id = params[:manager_id] 
    if @assign.save 
    redirect_to :controller => "interns", :action => "home" 
    else 
    render :action => :new 
    end 
end 

Le problème est: manager_id = nil. Pourquoi? Merci beaucoup.

Répondre

1

Commentaire à la suite ou

@assign.manager_id = params[:manager_id] 

OU remplacer par

@assign.manager_id = params[:assign][:manager_id] 
1

Vous n'avez pas besoin de cette ligne

@assign.manager_id = params[:manager_id] 

Vous assignant déjà manager_id dans la ligne avant

@assign = Assign.new(params[:assign]) 
Questions connexes