Следвам A Wicked exampe за изграждане моя съветник, освен че първо създавам модела в специален контролер, след това при запазване пренасочвам към контролера на стъпките, но получавам грешка при маршрутизиране, казваща:
No route matches {:action=>"show", :controller=>"needs_personals/steps"}
Кодът за пренасочване изглежда така:
redirect_to needs_personal_step_path, :needs_personal_id => @needsPersonal.id
Използвах needs_personal_step_path
, защото моят rake routes
извежда това:
needs_personal_steps GET /needs_personals/:needs_personal_id/steps(.:format) needs_personals/steps#index
POST /needs_personals/:needs_personal_id/steps(.:format) needs_personals/steps#create
new_needs_personal_step GET /needs_personals/:needs_personal_id/steps/new(.:format) needs_personals/steps#new
edit_needs_personal_step GET /needs_personals/:needs_personal_id/steps/:id/edit(.:format) needs_personals/steps#edit
needs_personal_step GET /needs_personals/:needs_personal_id/steps/:id(.:format) needs_personals/steps#show
PUT /needs_personals/:needs_personal_id/steps/:id(.:format) needs_personals/steps#update
DELETE /needs_personals/:needs_personal_id/steps/:id(.:format) needs_personals/steps#destroy
Във файла с маршрути имам това:
resources :needs_personals do
resources :steps, controller: 'needs_personals/steps'
end
Ако напиша път, насочващ към браузъра, работи /needs_personals/90/steps
Благодаря.
Актуализация от 29 септември 2012 г.
Вярвам, че съм разбрал защо това го прави и съм приложил решение. Мисля, че това се случва поради объркване с параметъра id. Въпреки преминаването на needs_personal_id
изглежда, че третира идентификатора като последния параметър на връзката вместо средния идентификатор.
Работата ми е просто да го насоча към действителния URL адрес на низа:
redirect_to "/needs_personals/#{@needsPersonal.id}/steps"
Това работи добре. Въпреки че бих искал да знам как да го направя с правилния път.