Rails: вложенные маршруты для связанных записей модели

Моя главная цель - передать идентификатор профиля и идентификатор компании с помощью хэша params, чтобы обновить объединение между двумя моделями.

Модели настраиваются так, что профиль принадлежит_ компании, а компания может иметь сотрудников (профили), как показано в коде внизу.

Я хочу использовать контроллер сотрудника, чтобы добавлять, удалять и показывать связи профиля с компанией.

но когда я пытаюсь сделать это, я получаю следующую ошибку

No route matches {:action=>"show", :controller=>"employees", :company_id=>#<Profile id: 1, user_id: 1, first_name: "Aaron", last_name: "Dufall", created_at: "2012-06-30 07:49:00", updated_at: "2012-07-01 14:03:24", deleted: false, company_id: 1>}

когда он хочет показать, когда я указал delete как метод, показанный в приведенном ниже коде

show.html.erb

<% @employees.each do |employee| %>
   <%= link_to full_name(employee), employee %>
   <%= link_to "Remove", company_employee_path(employee), :method => :delete %>
<% end %>

routes.rb

resources :companies do
  resources :employees
  resources :requests do
    put 'accept', :on => :member
  end
end

company.rb

class Company < ActiveRecord::Base
  attr_accessible :name

  has_many :employees, 
           :foreign_key => 'company_id', 
           :class_name => "Profile"

  has_many :requests, as: :requestable

  validates :name,  presence: true, length: { maximum: 50 }, uniqueness: true

конец

profile.rb

class Profile < ActiveRecord::Base
  belongs_to :user
  belongs_to :company
  has_many :requests
  has_many :requested, as: :requestable

  attr_accessible :first_name, :last_name


  validates :first_name, presence: true
  validates :last_name, presence: true

end

1 ответ

Решение

Использование resource вместо resources в маршрутах.

Другие вопросы по тегам