2010-06-29 4 views
0

Менеджер :has_many:interns, :through => :assigns
Intern :has_many:managers, :through => :assignsRails collection_select

Я пытаюсь создать новый присвойте запись. Это правопреемники/новый вид, в котором данная проверке подлинности стажер создает новую ассоциацию с менеджером:

# 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 

Проблема заключается в том: manager_id = nil. Зачем? Огромное спасибо.

ответ

1

Закомментируйте нижеследующего или

@assign.manager_id = params[:manager_id] 

ИЛИ заменить

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

Вам не нужна эта линия

@assign.manager_id = params[:manager_id] 

Вы уже назначая manager_id в строке перед

@assign = Assign.new(params[:assign]) 
Смежные вопросы