Контроллер действий: исключение - идентификатор не найден - PullRequest
1 голос
/ 27 апреля 2010

Я постепенно осваиваю Rails, и благодаря нескольким людям у меня теперь есть базовые знания об отношениях и связях с базами данных и т.д. Мои предыдущие вопросы вы можете увидеть здесь: Отношения с базами данных Rails

Я настроил модели своих приложений со всеми необходимыми has_one и has_many: через и т. Д., Но когда я иду, чтобы добавить kase и выбрать компанию из выпадающего списка - кажется, что она не присваивает идентификатор компании Казе.

Вы можете посмотреть видео приложения и ошибки здесь: http://screenr.com/BHC

Вы можете увидеть полную разбивку приложения и соответствующего исходного кода в репозитории Git здесь: http://github.com/dannyweb/surveycontrol

Если бы кто-нибудь мог пролить свет на мою ошибку, я был бы очень признателен!

Спасибо

Danny

Ответы [ 2 ]

1 голос
/ 27 апреля 2010

Я считаю, что это должно быть

class Company < ActiveRecord::Base
   has_many :people
   has_many :kases
end

class Kase < ActiveRecord::Base
   belongs_to :company
   belongs_to :person
end

class Person < ActiveRecord::Base
   belongs_to :company
   has_one :kase
end

На ваш взгляд (app/views/kases/new.html.erb) у вас есть

<li>Company Select<span><%= f.select :company_id, Company.all %></span></li>

Попробуйте изменить выбранную часть на

<%= f.select :company_id, Company.all.collect {|m| [m.name, m.id]} %>

Предложение

Я также заметил, что у вас есть четыре метода в вашем контроллере, чтобы найти Kases по статусу. Вы можете сделать это в своей модели, используя named_scope. Это так:

named_scope :active, :conditions => {:kase_status => 'Archived'}

И тогда, когда вам нужно показать только активные Kases, вы звоните Kase.active. То же самое для другого статуса.

1 голос
/ 27 апреля 2010

Вы настроили свои модели Kase и Company как отношения один-к-одному (см. http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html).. Возможно, это не то, что вы хотели. Возможно, если бы вы могли объяснить ваши предполагаемые отношения, я мог бы сказать вам, где ваша ошибка есть

class Company < ActiveRecord::Base
  has_many :kases
  has_many :people
end

class Kase < ActiveRecord::Base
  belongs_to :company    # foreign key: company_id
  has_and_belongs_to_many :people    # foreign key in join table
end

class Person < ActiveRecord::Base
  has_and_belongs_to_many :kases    # foreign key in join table
end

Показаны только соответствующие детали. Это должно быть шагом в правильном направлении. Вам понадобится таблица соединений для отношения «многие ко многим» или, в качестве альтернативы, для ее моделирования с использованием «has_many: through». Зависит от того, нужно ли вам хранить другие свойства в соединении. Подробнее см. Ссылку выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...