2013-03-17 4 views
0

Я работаю над исправлением этой проблемы в течение нескольких дней. Я продолжаю получать ошибку:Продолжайте получать ActiveRecord :: AssociationTypeMismatch

ActiveRecord::AssociationTypeMismatch in SatellitesController#create 

Satellite(#70098878574220) expected, got String(#70098849353340) 

Я просмотрел весь этот сайт, но ничего не помогает. Это то, что я в моем коде до сих пор:

В моей new.html.erb файле:

<%= form_for(@satellite) do |f| %> 
<div class="field"> 
    <%= f.label :parent_id %></br> 
    <%= f.select(:parent_id, Satellite.all.collect { |s| [ s.name, s.id ] }, { :include_blank => '-select-' }) %> 
</div> 

И это объединение Я использую:

class Satellite < ActiveRecord::Base 

    validates :name, :presence => true, :uniqueness => true 

    has_many :satellites, class_name: 'Satellite', foreign_key: 'parent_id' 
    belongs_to :parent_id, class_name: 'Satellite', foreign_key: 'parent_id' 
end 

Любая помощь будет БЫТЬ НАСТОЯТЕЛЬНО оценен!

+0

Показать StackTrace фактической ошибки и строку кода, он ссылающийся на ваш вопрос. – Veraticus

+0

Да, в частности, ваш метод 'create' в вашем' SatellitesController'. –

+0

def create @ satellite = Satellite.new (params [: satellite]) если @ satellite.save redirect_to @satellite, извещение: «Спутник был успешно создан». еще оказать действие: «новый» конец конец – haxel

ответ

0

Не уверен, связано ли это с тем, почему использовать select, а не collection_select?

<%= f.select(:parent_id, Satellite.all.collect { |s| [ s.name, s.id ] }, { :include_blank => '-select-' }) %> 

Может быть

<%= f.collection_select :parent_id, Satellite.all, :id, :name, { :include_blank => true } %> 

выглядит также, как ссылки на родителя в себя часть вашей модели, ссылающегося может быть неправильным.

belongs_to :parent_id, class_name: 'Satellite', foreign_key: 'parent_id' 

Я думаю, что это должно быть

belongs_to :satellites, class_name: 'Satellite', foreign_key: 'parent_id' 
+0

Нет, это тоже не помогло. Я все еще получаю тот же спутник (...), который получил, получил String (...). – haxel

+0

Обновлен ответ на основе ваших отзывов. – muttonlamb

+0

Когда я меняю его на: parent, я получаю неверный метод ошибки: parent – haxel

Смежные вопросы