Rails 3 ведет к неправильному контроллеру - PullRequest
4 голосов
/ 11 августа 2011

Я хотел создать новое действие и назвал его «showemployees».Вот что я уже сделал:

-> в контроллере:

def showemployees
end

-> создание приложения / views / employee / showemployees.html.erb

-> вconfig / маршруты

match "/employees/showemployees" => "employees#showemployees"

Я думал, что этого достаточно для открытия showemployees.html.erb сейчас через localhost: 3000 / employee / showemployees , но, похоже,например, Rails все еще проходит через действие show (из ресурсов: employee) и не выполняет действие showemployees, потому что оно говорит мне

ActiveRecord::RecordNotFound in EmployeesController#show
Couldn't find Employee with ID=showemployees

Что мне нужно изменить, чтобы Rails выполнял действие showemployees-action?


исходный код моего маршрута:

System::Application.routes.draw do

  match "/employees/showemployees" => "employees#showemployees" #für showemployees.html.erb

  root :to => "employees#index"

  resources :course_to_dos

  resources :current_qualifications

  resources :expected_qualifications

  resources :skills

  resources :employees

  resources :positions

  resources :admin


end

Ответы [ 2 ]

5 голосов
/ 11 августа 2011

попробуйте пройти по Rails-way, если хотите получить коллекцию, используйте коллекцию

resources :employees do
  collection do
    get :showemployees
  end
end
3 голосов
/ 11 августа 2011

Если вы опубликуете файл полных маршрутов, мы сможем сделать определенный вызов, но на основании сообщения об ошибке похоже, что у вас есть более широкое определение маршрута, отображающее сотрудников # show, определенное над этим маршрутом таким образом, что оно получаетсоответствует.

Маршруты оцениваются в том порядке, в котором они определены, поэтому, если у вас есть очень широкий шаблон маршрута, определенный над узким, ваш узкий маршрут никогда не будет вызван.

edit: вы будетехотите убрать косую черту с вашего маршрута и добавить showemployeees к фактическому URL, чтобы он читался как

 match "employees/showemployees" => "employees#showemployees" 
...