开发者

Rails collection_select

Manager :has_many :interns, :through => :assigns

Intern :has_many :managers, :through => :assigns

I am trying to create a new assign record. This is the assigns/new view where a given authenticated intern is creating a new association with a manager:

# 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 ={:cl开发者_如何学运维ass =>"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

The problem is: manager_id = nil. Why? Thanks very much.


Comment out following or

@assign.manager_id = params[:manager_id]

OR replace with

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


You don't need this line

@assign.manager_id = params[:manager_id]

You're already assigning the manager_id in the line before

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜