ActiveRecord :: AssociationTypeMismatch错误

时间:2011-06-28 20:04:15

标签: ruby-on-rails-3

我的页面更新错误

Admin :: PagesController#update中的ActiveRecord :: AssociationTypeMismatch 页面(#64407864)预期,得到字符串(#17069256) app / controllers / admin / pages_controller.rb:36:在`update'

Admin :: PagesController更新的第36行

   if @page.update_attributes(params[:page])

page.rb

class Page < ActiveRecord::Base

  has_and_belongs_to_many :related, :class_name => "Page", :join_table => "pages_related", :foreign_key => "page_id", :association_foreign_key => "related_id"

end

_form.html.erb

    <%= f.select :related, Page.all.delete_if {|p| p.id == f.object.id}.collect {|p| [p.title, p.id]}, { :include_blank => true }, {:multiple => "multiple"} %>

向上:


谢谢,它的工作,但现在我得到了新的页面创建错误

  

为nil调用id,这会   错误地是4 - 如果你真的   想要id为nil,请使用object_id

     

提取的来源(第70行左右):

     

70:&lt;%= f.select:related_ids,   Page.all.delete_if {| p | p.id ==   f.object.id} .collect {| p | [p.title,   p.id]},{:include_blank =&gt;是的,   {:multiple =&gt; “multiple”,:class =&gt;   “select_multiple”}%&gt;

1 个答案:

答案 0 :(得分:3)

您的select字段应该被称为related_ids,因为它将传回所选对象的ID,而不是实际的对象本身。