【发布时间】:2012-08-13 04:28:34
【问题描述】:
我收到一个路由错误:没有路由匹配 [POST] "/students/1" 我无法弄清楚。以下是详细信息。
查看代码:
<% @students.each do |student| %>
.
.
<td><%= link_to 'Show', student %></td>
<td><%= link_to 'Edit', edit_student_path(student) %></td>
<td><%= link_to 'Select Subjects', select_path(student) %></td> # error occurs here
在我的学生控制器中:
def select
.
.
end
routes.rb: HomeSchool::Application.routes.draw 做
resources :notes
resources :assignments
resources :subjects do
resources :assignments, :only => [:create, :index, :new]
end
resources :students
resources :resources
match "students/:id/select" => "students#select", :as => :select
root :to => 'students#index'
end
rake 路由的输出是:
GET /students/:id/select(.:format) students/:id#select
notes GET /notes(.:format) notes#index
POST /notes(.:format) notes#create
new_note GET /notes/new(.:format) notes#new
edit_note GET /notes/:id/edit(.:format) notes#edit
note GET /notes/:id(.:format) notes#show
PUT /notes/:id(.:format) notes#update
DELETE /notes/:id(.:format) notes#destroy
assignments GET /assignments(.:format) assignments#index
POST /assignments(.:format) assignments#create
new_assignment GET /assignments/new(.:format) assignments#new
edit_assignment GET /assignments/:id/edit(.:format) assignments#edit
assignment GET /assignments/:id(.:format) assignments#show
PUT /assignments/:id(.:format) assignments#update
DELETE /assignments/:id(.:format) assignments#destroy
subject_assignments GET /subjects/:subject_id/assignments(.:format) assignments#index
POST /subjects/:subject_id/assignments(.:format) assignments#create
new_subject_assignment GET /subjects/:subject_id/assignments/new(.:format) assignments#new
subjects GET /subjects(.:format) subjects#index
POST /subjects(.:format) subjects#create
new_subject GET /subjects/new(.:format) subjects#new
edit_subject GET /subjects/:id/edit(.:format) subjects#edit
subject GET /subjects/:id(.:format) subjects#show
PUT /subjects/:id(.:format) subjects#update
DELETE /subjects/:id(.:format) subjects#destroy
students GET /students(.:format) students#index
POST /students(.:format) students#create
new_student GET /students/new(.:format) students#new
edit_student GET /students/:id/edit(.:format) students#edit
student GET /students/:id(.:format) students#show
PUT /students/:id(.:format) students#update
DELETE /students/:id(.:format) students#destroy
resources GET /resources(.:format) resources#index
POST /resources(.:format) resources#create
new_resource GET /resources/new(.:format) resources#new
edit_resource GET /resources/:id/edit(.:format) resources#edit
resource GET /resources/:id(.:format) resources#show
PUT /resources/:id(.:format) resources#update
DELETE /resources/:id(.:format) resources#destroy
select /students/:id/select(.:format) students#select
root / students#index
有什么建议吗?我很难准确掌握rails中的路由应该如何工作,我还没有找到任何关于它的论文,但我很确定没有为我的选择路线列出任何方法至少是我的问题。
谢谢,
隆
【问题讨论】:
-
你确定错误发生在你说的那一行吗?
-
有些地方不在您的问题范围内。请注意 rake:routes 顶部的行——
GET /students/:id/select(.:format) students/:id#select。首先,为此只定义了一个 GET 方法。其次,students/:id没有控制器可以进行选择操作。 routes.rb 文件中没有任何内容会导致这种情况。我实际上对您如何认为您的控制器名称为students/:id.很感兴趣 -
好的,现在修好了,但我不知道我是怎么想到我有一个学生/:id 控制器的。
标签: ruby-on-rails ruby-on-rails-3