首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4-嵌套资源路由

Rails 4-嵌套资源路由
EN

Stack Overflow用户
提问于 2015-02-04 15:28:55
回答 1查看 17关注 0票数 0

我有这样定义的课程和教学大纲模型

代码语言:javascript
复制
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

这样定义的路线

代码语言:javascript
复制
resources :courses do
    resource :syllabuses
  end

我的html有一个编辑教学大纲的链接。

代码语言:javascript
复制
<td><%= link_to "Edit", edit_course_syllabuses_path, class: "btn btn-primary"  %></td>

rake路线给我看这个

代码语言:javascript
复制
edit_course_syllabuses GET    /courses/:course_id/syllabuses/edit(.:format) syllabuses#edit

服务器日志显示请求处理如下

代码语言:javascript
复制
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" = $1 LIMIT 1  [["id", nil]]
Completed 404 Not Found in 2ms

ActiveRecord::RecordNotFound - Couldn't find Syllabus with 'id'=:

如何将教学大纲id传递给教学大纲控制器编辑操作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-04 15:32:29

因为您有一个has_many关联,所以您还需要resources :syllabuses (注意s)。

更改它,重新启动服务器并运行以下代码以查看所有路由:

代码语言:javascript
复制
bundle exec rake routes

您的路径现在是edit_course_syllabuse,您可以这样使用它:

代码语言:javascript
复制
<%= link_to "Edit", edit_course_syllabuses_path(@syllabuse), class: "btn btn-primary"  %>

您可以阅读有关铁路导轨中嵌套资源的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28325112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档