【问题标题】:Using high voltage with nested directories对嵌套目录使用高压
【发布时间】:2013-02-06 10:05:01
【问题描述】:

我有一个 rails 3.2 应用程序,我在其中使用 gem High Voltage 作为我的公共页面。它似乎工作正常,但是,我希望能够在我的 pages 文件夹中放置一些子目录。

例如:

/pages
--/directory_1
----index.html.erb
--/directory_2
----index.html.erb

在这个例子中,我想将我的浏览器指向pages/directory_1/index等。文档声称这是可能的:

如果从 URL 的角度来看对您有意义,您可以将页面嵌套在目录结构中: link_to "Q4 Reports", page_path("about/corporate/policies/HR/en_US/biz/sales/Quarter-Four")

但是这样的东西对我不起作用。

我已经尝试过使用命名空间:

namespace :directory_1 do
  match "pages/:id" => "high_voltage/pages#show"
end

但那当然会转到directory_1/high_voltage/pages#show,这是错误的。

简单地匹配"pages/directory_1/:id" => "high_voltage/pages#show"会带来两个问题:它不再允许页面目录本身中的任何视图,并且不同子目录中具有相同文件名的视图会混淆。

那么我怎样才能在我的页面目录中使用高压完成嵌套目录?

【问题讨论】:

    标签: ruby-on-rails routes url-routing high-voltage


    【解决方案1】:

    只需在app/views/pages 内创建一个目录结构,以反映您需要的 URL 层次结构。

    例如,如果您使用路径 app/views/pages/about_me/about.html.erb 创建了一个名为 about.html.erb 的视图,您将通过使用来引用它

    <%= link_to "About", page_path("about_me/about") %>
    

    我在当前项目中得到了这个精确的解决方案。

    【讨论】:

    • 谢谢德帕!这真的很有趣——我在一个新的应用程序中尝试过它,它工作得很好。但不是在旧的 - 我想我必须自己找出那个。谢谢!
    • 嗯,也许你有旧版本的 gem 或什么?
    • 不,都是 1.2.1 - 另外,我的路线中没有任何东西可以以某种方式覆盖该行为......奇怪!
    • 您的旧应用中有 config/initializers/high_voltage.rb 中的任何内容吗?
    • 不——事实上,我没有那个文件。相反,也许我应该里面有东西?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多