Рельсы, пытающиеся создать вложенные маршруты

Хорошо я стреляю, чтобы иметь URL как этот /applications/:application_id/jobseekers/new . Я знаю, произвожу ли я 2 лесов (заявления и ищущие работу), я мог бы заставить маршруты работать, делая это:

resources :applications do
  resources :jobseekers
end

но мне не нужны полные леса для ищущих работу. Я только нуждаюсь в новом и создаю метод.

Как я могу написать свои маршруты так, чтобы jobseekers#new и jobseekers#create методы работали?

Я попробовал

resources :applications do 
    get '/applications/:application_id/jobseekers/new', :to => 'jobseekers#new', :as => :new_application_jobseeker
    post '/applications/:application_id/jobseekers', :to => 'jobseekers#create'
  end

но это дает мне эту ошибку:

No route matches [GET] "/applications/3/jobseekers/new"

поражая этот URL:

localhost:3000/applications/3/jobseekers/new
1
nl ja de

3 ответы

Можно определить действия, которые вы хотите следующим образом:

resources :applications do
  resources :jobseekers, :only=> [:new, :create]
end
5
добавлено
Ahh хорошее решение. Не знал об этом.
добавлено автор Catfish, источник
Хороший, чтобы знать. По моему скромному мнению, направление в рельсах походит на it' s намного более сложный, чем он должен быть.
добавлено автор Catfish, источник
@shioyama, вы не торопились, чтобы объяснить, какая Зубатка уже делала неправильный, хороший ответ.:)
добавлено автор Sam Peacey, источник
У @Catfish, только также есть копия - кроме , который можно использовать, если вы просто хотите исключить несколько действий.
добавлено автор Sam Peacey, источник
Кажется, что я слишком опаздывал! Надеюсь, что мой ответ был полезен так или иначе.
добавлено автор Chris Salzberg, источник

Проблема в ваших маршрутах состоит в том, что ваш включают полный путь ( '/applications/:application_id/jobseekers/new' ) внутри вложенный маршрут. Вместо этого необходимо поместить ваш , получают и почта требования в членский блок:

resources :applications do
  member do
    get "jobseekers/new", :to => 'jobseekers#new'
    post "jobseekers", :to => 'jobseekers#create'
  end
end

Делая это, Рельсы будут соответствовать /applications/:id/, часть будет предварительно быть на рассмотрении, чтобы "ищущих работу/новый" , чтобы получить полный маршрут, который вы видите, звоните ли вы маршруты граблей :

new_application_jobseeker_application GET    /applications/:id/jobseekers/new(.:format) jobseekers#new
               jobseekers_application POST   /applications/:id/jobseekers(.:format)     jobseekers#create

Альтернативно, можно определить вложенный ресурс и включать только , новый , и создают действия с только выбор:

resources :applications do
  resources :jobseekers, :only=> [:new, :create]
end

Обратите внимание, что помощники пути будут немного отличаться в этом случае и будут использовать application_id , а не id для идентификатора заявления:

   application_jobseekers POST   /applications/:application_id/jobseekers(.:format)     jobseekers#create
new_application_jobseeker GET    /applications/:application_id/jobseekers/new(.:format) jobseekers#new
4
добавлено
Хорошая информация. Спасибо за это. Что делает "участник"?
добавлено автор Catfish, источник
Хорошо gotcha. Спасибо за информацию. It' s очень полезный.
добавлено автор Catfish, источник
I' ve, которые просматривают посредством того направления, ведут так много раз, но я никогда, кажется, не нахожу что i' m ищущий там.
добавлено автор Catfish, источник
<в коде> участник делает , говорится, что вы хотите то, что вы делаете в блоке, чтобы относиться к маршруту за участника сбора ресурса, т.е. отдельному приложению, выраженному в вашем маршруте как application/: id . Если вы вместо этого используете коллекцию, делают тогда, это будет относиться к целой коллекции (заявлений) с путем application/ . В вашем случае, если бы вы использовали коллекцию, делают , вы получили бы маршруты ' / applications/ jobseekers/ new' и ' ' / applications/ jobseekers/ create' . Но вам нужен идентификатор заявления там, таким образом, необходимо использовать членский маршрут.
добавлено автор Chris Salzberg, источник
Руководство Рельсов на направлении детализировало объяснения каждого: guides.rubyonrails.org/routing.html
добавлено автор Chris Salzberg, источник

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

rails g model jobseekers

и т.д.

0
добавлено
Я don' t на самом деле хочу модель для ищущих работу как i' m, просто используя этого диспетчера, чтобы изменить другую модель. Мне нужны 2 отдельных контроллера.
добавлено автор Catfish, источник
Ваш ответ также doesn' t не объясняют, почему мой маршрут не работает.
добавлено автор Catfish, источник
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков

Rails Chat
Rails Chat
87 участник(ов)

You are welcome to discuss Ruby On Rails development process and other stuff