Rails 4 - 嵌套资源路由
Rails 4 - Nested resource routing
我有这样定义的课程和教学大纲模型
class Course < ActiveRecord::Base
has_many :enrollments
has_many :students, through: :enrollments, class_name: "User"
has_many :syllabuses
end
class Syllabus < ActiveRecord::Base
belongs_to :course
end
这样定义的路由
resources :courses do
resource :syllabuses
end
我的 html 有一个 link 可以编辑教学大纲
<td><%= link_to "Edit", edit_course_syllabuses_path, class: "btn btn-primary" %></td>
rake routes 告诉我这个
edit_course_syllabuses GET /courses/:course_id/syllabuses/edit(.:format) syllabuses#edit
服务器日志显示请求处理像
Started GET "/courses/46/syllabuses/edit" for ::1 at 2015-02-04 20:55:43 +0530
Processing by SyllabusesController#edit as HTML
Parameters: {"course_id"=>"46"}
Syllabus Load (0.3ms) SELECT "syllabuses".* FROM "syllabuses" WHERE "syllabuses"."id" = LIMIT 1 [["id", nil]]
Completed 404 Not Found in 2ms
ActiveRecord::RecordNotFound - Couldn't find Syllabus with 'id'=:
如何将课程 ID 传递给课程控制器编辑操作?
既然你有一个has_many
协会,你还需要resources :syllabuses
(注意s)。
改变那个,重新启动服务器和运行下面的代码来查看所有路由:
bundle exec rake routes
您的路径现在是 edit_course_syllabuse
,您可以像这样使用它:
<%= link_to "Edit", edit_course_syllabuses_path(@syllabuse), class: "btn btn-primary" %>
您可以在 Raild guide
中阅读有关嵌套资源的更多信息
我有这样定义的课程和教学大纲模型
class Course < ActiveRecord::Base
has_many :enrollments
has_many :students, through: :enrollments, class_name: "User"
has_many :syllabuses
end
class Syllabus < ActiveRecord::Base
belongs_to :course
end
这样定义的路由
resources :courses do
resource :syllabuses
end
我的 html 有一个 link 可以编辑教学大纲
<td><%= link_to "Edit", edit_course_syllabuses_path, class: "btn btn-primary" %></td>
rake routes 告诉我这个
edit_course_syllabuses GET /courses/:course_id/syllabuses/edit(.:format) syllabuses#edit
服务器日志显示请求处理像
Started GET "/courses/46/syllabuses/edit" for ::1 at 2015-02-04 20:55:43 +0530
Processing by SyllabusesController#edit as HTML
Parameters: {"course_id"=>"46"}
Syllabus Load (0.3ms) SELECT "syllabuses".* FROM "syllabuses" WHERE "syllabuses"."id" = LIMIT 1 [["id", nil]]
Completed 404 Not Found in 2ms
ActiveRecord::RecordNotFound - Couldn't find Syllabus with 'id'=:
如何将课程 ID 传递给课程控制器编辑操作?
既然你有一个has_many
协会,你还需要resources :syllabuses
(注意s)。
改变那个,重新启动服务器和运行下面的代码来查看所有路由:
bundle exec rake routes
您的路径现在是 edit_course_syllabuse
,您可以像这样使用它:
<%= link_to "Edit", edit_course_syllabuses_path(@syllabuse), class: "btn btn-primary" %>
您可以在 Raild guide
中阅读有关嵌套资源的更多信息