缩短Rails路由

时间:2016-03-25 01:48:59

标签: ruby-on-rails rails-routing

我怎样才能在rails应用程序中缩短这些非常冗长的路径?

# routes.rb

  resources :courses do
    resources :sections do
      resources :lessons do
        resources :sub_lessons
      end  
    end
  end 

1 个答案:

答案 0 :(得分:1)

我建议您按照导轨oficial guides进行操作。避免将资源嵌套深度超过1级被认为是一种很好的做法。也就是说,如果你真的需要这种级别的嵌套,你可以使用shallow选项。这样至少你的路线会更干净。如上面引用的文档中所述:

  

避免深度嵌套的一种方法(如上所述)是生成在父级下作用域的集合操作,以便了解层次结构,但不嵌套成员操作。换句话说,仅构建具有最少量信息的路由以唯一地标识资源

您可以尝试这样的事情:

resources :courses, shallow: true do
  resources :sections, shallow: true do
    resources :lessons, shallow: true do
      resources :sub_lessons
    end  
  end
end

只需稍微玩一下,然后使用rake routes查看路线的外观。

但是,您应该问自己的是,例如,我是否需要在部分下面进行课程学习?拆分它们可能更好,例如:

resources :courses do
  resources :sections
end

resources :lessons do
  resources :sub_lessons
end  

这一切都取决于您在什么行动中所需的范围,例如,如果您需要根据课程而不是部分限制课程,那么您只需要将课程ID作为参数传递。