【问题标题】:Ruby on Rails: Can I route a request directly to a view?Ruby on Rails:我可以将请求直接路由到视图吗?
【发布时间】:2010-12-30 14:39:21
【问题描述】:

我有一个管理部分,其中包含controllers 目录的子目录。即,app/controllers/admin/ 目录包含一组文件,每个文件都包含一个控制器,用于处理管理部分的单独部分。

现在,我想创建一个非常简单的“管理主页”,它只是说“欢迎来到管理部分”,但我想避免为此创建一个完整的控制器,或者放置“操作" 其他任意控制器中此视图的方法。

所以,问题是,有没有办法“直接路由到视图”——直接路由到 HTML 文件? (而且,我不想从 /some-file.html 这样的请求路径路由到 HTML 文件;我需要从 /admin/ 这样的路径路由。)

在这里问这个问题几乎不值得花时间创建一个存根控制器,但我相信我将来还会有这样的需求。

【问题讨论】:

    标签: ruby-on-rails rails-routing


    【解决方案1】:

    就像 moritz 说的,你不能完全绕过控制器,但你不一定要为这个动作创建一个完整的控制器。当我需要“仪表板”或“登陆”类型的页面时,我只需将操作添加到我的 ApplicationController:

    class ApplicationController < ActionController::Base
      def index
      end
    end
    

    然后把你的页面放在 app/views/application/index.html.erb

    对于您的情况,您可以将 application_controller.rb 放在您的 app/controllers/admin/ 目录中,并在那里执行相同的操作。

    我发现这是放置资源之外页面的理想场所。

    【讨论】:

    • 神秘的投票者愿意解释为什么这不是一个好主意吗?我已经这样做了一段时间,它对我有用,但我对我可能做错了的想法持开放态度。
    • Ben:您的想法对我进行布局的早期测试很有帮助。谢谢。
    • Rails 在城里是新的,但在我看来,这并不是很好。有更好的解决方案吗?有一个带有一些空方法的类很奇怪。
    • 过去你好!自从我回答这个问题以来的四年里,我开始做一些不同的事情,但差别不大。我现在只创建一个带有空索引操作的 HomeController。 IIRC 在 Rails 核心中关于是否将我的答案设置为高于默认值的问题存在分歧。无论您采用哪种方式,如果您的页面不需要控制器执行任何操作耸耸肩,则该操作将为空。
    【解决方案2】:

    不,你不能。为什么?

    设计:这只是违反了 Rails 强制您使用的 MVC 模式,这是为了您自己的利益。总是有一个控制器参与。是的,即使对于这样的存根页面,也需要一个控制器。无论如何,几行代码不会伤害您,当您需要执行一些访问控制时,您会再次爱上它。

    希望能回答你的问题 :-)

    【讨论】:

      猜你喜欢
      • 2014-09-17
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多