【问题标题】:Rails 3 controller from plugin插件中的 Rails 3 控制器
【发布时间】:2011-10-28 07:02:18
【问题描述】:

我正在创建一个 Rails 3 插件,我想在其中集成控制器,rails 会自动将其视为 app/controllers 文件夹中的“普通”控制器。我该如何做到这一点,或者从插件中获得自定义控制器的最佳解决方案是什么? 我从 guides.rubyonrails.org 找到了文档,但他们已经更改了文档,并且插件开发不再包括控制器。

谢谢

【问题讨论】:

    标签: ruby-on-rails-3 plugins controllers


    【解决方案1】:

    您需要在插件中定义一个继承自Rails::Engine 的类。实际上,您想要的功能是一个引擎

    这样定义类:

    lib/your_thing/engine.rb

    module YourThing
      class Engine < Rails::Engine
      end
    end
    

    然后,您可以在该插件中的 app/controllers 处定义引擎的控制器,并且为了让它们整齐地工作,您还需要为它们定义路由,您可以在引擎内部的 config/routes.rb 中这样做:

    YourThing::Engine.routes.draw do
      resources :things
    end
    

    接下来,您需要在应用程序中安装引擎:

    mount YourThing::Engine, :at => "/"
    

    然后应用程序将能够使用来自您的引擎的路由。

    有关更多信息,我正在编写官方 Rails Engine 指南,you can reference here. 如果您有任何其他问题,请告诉我,我会在指南中尝试回答。

    【讨论】:

    • 非常感谢。我现在就试试这个。
    • 我尝试使用 --mountable 选项使用插件新生成器创建引擎,但未创建 engine.rb 文件。可能是什么原因? Rails 版本问题?
    • @Mika:你应该运行 Rails 3.1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    相关资源
    最近更新 更多