ActiveRecord :: AssociationTypeMismatch по многим отношениям - PullRequest
0 голосов
/ 02 апреля 2012

Здравствуйте. Я пытаюсь создать множественный выбор, чтобы заполнить таблицу соединений «многие ко многим».Я могу создать новую новую форму, но получаю «AssociationTypeMismatch», когда пытаюсь сохранить свою запись.Решения, которые я нахожу в Интернете, не решают мою проблему.
Надеясь, что кто-то может решить, что я должен делать, чтобы избавиться от "AssociationTypeMismatch"

class Presenter < ActiveRecord::Base
   belongs_to :seminar
   belongs_to :person
end

class Seminar < ActiveRecord::Base
  attr_accessible  :description, :title,
  has_many :presenters, :foreign_key => "person_id" 
  has_many :lecturer, :through => :presenters, :source => :person
  accepts_nested_attributes_for :lecturer, :presenters
end

class Person < ActiveRecord::Base
  attr_accessible :first_name, :last_name
  has_many :presentors
  has_many :lecturingAt, :through => :presentors

  def fullName
      first_name + " " + last_name
  end
end

seminars_controller.rb

def new
  @seminar = Seminar.new
  @current_presenters = Person.find(:all)
  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @seminar }
  end
end
....
def create
  @seminar = Seminar.new(params[:seminar])
  respond_to do |format|
    if @seminar.save
      format.html { redirect_to(@seminar, :notice => 'Seminar was successfully created.') }
      format.xml  { render :xml => @seminar, :status => :created, :location => @seminar } 
    else
      format.html { render :action => "new" }
      format.xml  { render :xml => @seminar.errors, :status => :unprocessable_entity }
    end
  end
end

Семинары / _form.html.erb.has, который заполняет мою коллекцию select именами и именами возможных лекторов.

....
<div class="field">
<%= f.label :presenter_id %><br />
<%= collection_select(:seminar,:lecturer,@current_presenters, :id, :fullName,{}, {:multiple=>true} ) %>
....

При отправке параметров, переданных в мой контроллер

Parameters: {...., "seminar"=>{ "lecturer"=>["1", "2"], "title"=>"1234567890", "description"=>"ASDFGHJKL:"}, "commit"=>"Create Seminar"}

Ошибка получения:

ActiveRecord :: AssociationTypeMismatch (ожидается инструктор (# 86075540), получена строка (# 73495120)):.

1 Ответ

1 голос
/ 02 апреля 2012
@seminar = Seminar.new

Попробуйте это

@seminar.lecturer_ids = params[:seminar].delete(:lecturer)
@seminar.update_attributes(params[:seminar])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...