【问题标题】:ruby on rails sub directory inside in the 'Views' main directory'Views' 主目录中的 ruby​​ on rails 子目录
【发布时间】:2011-01-12 14:02:39
【问题描述】:

我是 ruby​​ on rails 的新手,遇到一个简单的路由问题。

我有我的控制器“sub”和包含 add、edit、new erb 文件的“Views”文件夹。

在我的路线文件中,我有 'map.resources :subs'。

到目前为止,一切都很好。

问题: 我将 add、edit、new erb 文件移动到“Views”主目录中名为“admin”的子文件夹中。 我不知道如何从那个 'admin' 子目录调用那些 erb 文件。

默认情况下,它正在寻找 /app/views/subs/index.html.erb,我希望它在 /app/views/subs/admin/index.html.erb 中寻找

谁能告诉我怎么做。

非常感谢

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    我建议采用不同的方法,因为您似乎想要做的是管理员路由。在你的 routes.rb 中写

      namespace :admin do     
        resources :subs
      end 
    

    然后把你的视图放在子目录views/admin/subs

    另外,将您的控制器放在子目录 controllers/admin 中,并使用“Admin”命名它们,例如

    class Admin::StubsController < Admin::ApplicationController
      your_code_goes_here
    end
    

    当然,您还需要在 controllers/admin 目录中添加 application_controller.rb。但是你冷也派生自 ApplicationController 那就没必要了。

    您的控制器可以通过 url /admin/subs 调用

    这有帮助吗?

    【讨论】:

    • 非常感谢您的帮助 :) 是的,确实很有帮助
    【解决方案2】:

    您可以在控制器操作中显式呈现模板,如下所示:

    render :template => "subs/admin/index"
    

    【讨论】:

    【解决方案3】:

    我是 RoR 的初学者。

    我想要的是将所有视图(例如移动友好版本)分组到 1 个文件夹中,但最终不会有额外的命名空间或在控制器中创建新方法。 localhost:3000/posts 来电:

    class Post &lt; ActiveRecord

    而不是

    class Admin::Post &lt; ActiveRecord

    但在views/android/posts/index.html.erb 中加载视图

    因为这是我在 Google 上的第一次点击,所以下面的链接是我花了一些时间才找到的替代答案。

    Rails: Elegant way to structure models into subfolders without creating submodules

    【讨论】:

      猜你喜欢
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多