Я получаю эту странную странную ошибку маршрутизации, когда я нажимаю кнопку «Создать участника». Ясно, что я неправильно понимаю, как работают маршруты. Если бы вы могли уточнить, что было бы оценено!Сложные рельсы 3 Вложенный маршрут
No route matches {:action=>"present_survey", :controller=>"rounds", :program_id=>#
<Program id: 1, name: "JBS 2012", description: "Summer of 2012", open: false,
locked: true, suppress_hidden_participants: false, created_at: "2012-11-19 22:35:06",
updated_at: "2012-11-19 22:35:06">, :participant_id=>nil, :round_id=>#<Round id: 9,
program_id: 1, number: 8, start: 86, fin: 95, status: nil, open: true, open_date: nil,
created_at: "2012-11-19 22:35:07", updated_at: "2012-11-19 22:35:07">}
Вот соответствующий routes.rb линия:
new_program_participant GET /programs/:program_id/participants/new(.:format) participants#new
Вот соответствующие контроллеры линии:
class ParticipantsController < ApplicationController
respond_to :html
def index
@program_id = params[:program_id]
@program = Program.find(@program_id)
@participants = @program.participants.paginate(page: params[:page])
respond_with @participants do |format|
format.html {
render layout: 'layouts/progtabs'
}
end
end
Вот соответствующий вид линии:
<%= link_to "Create a new Participant", new_program_participant_path(@program_id) %>
Вот url, который генерирует d:
http://0.0.0.0:3000/programs/1/participants/new
отредактировал оригинальный плакат:
В ответ на вопросы и комментарии ниже:
- Ссылка появляется на главной странице, и предполагается, что взять меня к указанный URL, поэтому ссылка кажется мне верной.
- Вы можете увидеть в routes.rb ниже, чем на самом деле я это действие называется present_survey, но я не могу понять, почему он находится в игре
Здесь все маршруты файл:
root to: 'programs#index'
resources :programs do
resources :participants do
resources :rounds do
get 'survey' => 'rounds#present_survey'
put 'survey' => 'rounds#store_survey'
end
end
resources :questions
resources :rounds
member do
get 'report' => 'reports#report'
end
end
И, наконец, вот полный выход из рек маршрутов:
root / programs#index
program_participant_round_survey GET /programs/:program_id/participants/:participant_id/rounds/:round_id/survey(.:format) rounds#present_survey
PUT /programs/:program_id/participants/:participant_id/rounds/:round_id/survey(.:format) rounds#store_survey
program_participant_rounds GET /programs/:program_id/participants/:participant_id/rounds(.:format) rounds#index
POST /programs/:program_id/participants/:participant_id/rounds(.:format) rounds#create
new_program_participant_round GET /programs/:program_id/participants/:participant_id/rounds/new(.:format) rounds#new
edit_program_participant_round GET /programs/:program_id/participants/:participant_id/rounds/:id/edit(.:format) rounds#edit
program_participant_round GET /programs/:program_id/participants/:participant_id/rounds/:id(.:format) rounds#show
PUT /programs/:program_id/participants/:participant_id/rounds/:id(.:format) rounds#update
DELETE /programs/:program_id/participants/:participant_id/rounds/:id(.:format) rounds#destroy
program_participants GET /programs/:program_id/participants(.:format) participants#index
POST /programs/:program_id/participants(.:format) participants#create
new_program_participant GET /programs/:program_id/participants/new(.:format) participants#new
edit_program_participant GET /programs/:program_id/participants/:id/edit(.:format) participants#edit
program_participant GET /programs/:program_id/participants/:id(.:format) participants#show
PUT /programs/:program_id/participants/:id(.:format) participants#update
DELETE /programs/:program_id/participants/:id(.:format) participants#destroy
program_questions GET /programs/:program_id/questions(.:format) questions#index
POST /programs/:program_id/questions(.:format) questions#create
new_program_question GET /programs/:program_id/questions/new(.:format) questions#new
edit_program_question GET /programs/:program_id/questions/:id/edit(.:format) questions#edit
program_question GET /programs/:program_id/questions/:id(.:format) questions#show
PUT /programs/:program_id/questions/:id(.:format) questions#update
DELETE /programs/:program_id/questions/:id(.:format) questions#destroy
program_rounds GET /programs/:program_id/rounds(.:format) rounds#index
POST /programs/:program_id/rounds(.:format) rounds#create
new_program_round GET /programs/:program_id/rounds/new(.:format) rounds#new
edit_program_round GET /programs/:program_id/rounds/:id/edit(.:format) rounds#edit
program_round GET /programs/:program_id/rounds/:id(.:format) rounds#show
PUT /programs/:program_id/rounds/:id(.:format) rounds#update
DELETE /programs/:program_id/rounds/:id(.:format) rounds#destroy
report_program GET /programs/:id/report(.:format) reports#report
programs GET /programs(.:format) programs#index
POST /programs(.:format) programs#create
new_program GET /programs/new(.:format) programs#new
edit_program GET /programs/:id/edit(.:format) programs#edit
program GET /programs/:id(.:format) programs#show
PUT /programs/:id(.:format) programs#update
DELETE /programs/:id(.:format) programs#destroy
больше правок по OP
def new
@program = Program.find(params[:program_id])
@participant = @program.participants.new
respond_with @participant do |format|
format.html {
render layout: 'layouts/progtabs'
}
end
end
Не могли бы вы добавить соответствующую строку вашего файла маршрутов. –
Вы вызываете 'new_program_patricipant_path', который будет использовать новый метод (а не метод индекса, который вы укажете в своем вопросе). Можете ли вы показать свой новый метод 'StudentsController'? Сообщение об ошибке смотрит на совершенно другой контроллер и действие, что заставляет меня думать, что новый метод имеет в себе перенаправление? – joofsh
@joofsh: Я добавил некоторую информацию выше, включая весь файл routes.rb. Может быть, вы видите, что я не понимаю? Благодаря! – pitosalas