你知道如何动态生成路由,例如:
... (/:parent_id(/:parent_id(/:parent_id(/:parent_id))))/:id
我问这个问题是因为我有一个充当树的 Folder
模型(它有一个 parent_id
字段)及其 to_param
方法返回其名称
,该名称在parent_id
范围内是唯一的。因此,每个 :parent_id
和事件 :id
都是 name
。以下是路径示例(包含 4 个子文件夹):
/home/desktop/projects/rails/foobar
...其中第一个 :parent_id
(根)是“home”,:id
是“foobar”。
路线的另一个示例可能是(带有 1 个子文件夹):
/home/music
...如您所见,params[:parent_id] == 'home'
和 params[:id] == 'music'
。
有没有一种简洁的方法来编写漂亮的 Rails 3 路由来处理这些可能的嵌套路由?谢谢!!
最佳答案
为什么不直接使用 route globber并在你的 Controller 中将其分解?
# routes.rb
get "/*folders/:id" => "files#show"
*folders
部分将组合多个 URL 段。
# files_controller.rb
def show
folders = params[:folders].split('/') # gives an array of folder names
# do whatever else necessary
end
关于ruby-on-rails - 为使用acts_as_tree的资源构建嵌套路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5971067/