Контроллер действия: Исключение - идентификатор, не найденный

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

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

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

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

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

Спасибо,

Danny

1
задан Community 23 May 2017 в 11:48
поделиться

2 ответа

Вы настроили свои модели Kase и компании как взаимно однозначные (см. 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». Зависит от того, нужно ли хранить другие свойства в объединении. См. Ссылку выше для подробностей.

1
ответ дан 3 September 2019 в 00:59
поделиться

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

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
ответ дан 3 September 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: