首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ramaze两种控制器组合的“类红宝石”方法

Ramaze两种控制器组合的“类红宝石”方法
EN

Stack Overflow用户
提问于 2015-01-14 04:14:56
回答 1查看 46关注 0票数 0

如何将我在Ramaze中的代码库划分成不同的控制器类,其中最“类似红宝石”的方法是什么?

我在Ramaze有一个基本项目,我想把它分成多个文件。现在,我使用一个控制器类对所有的东西,并添加到它与开放的类。理想情况下,控制器的每个不同部分都在自己的类中,但我不知道如何在Ramaze中这样做。

我希望能够添加更多的功能和更多的独立控制器类,而不需要添加太多的样板代码。我现在要做的是:

init.rb

代码语言:javascript
复制
require './othercontroller.rb'

class MyController < Ramaze::Controller
  map '/'
  engine :Erubis

  def index
    @message = "hi"
  end
end
Ramaze.start :port => 8000

othercontroller.rb

代码语言:javascript
复制
class MyController < Ramaze::Controller
  def hello
    @message = "hello"
  end
end

任何关于如何分割这一逻辑的建议都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-14 13:01:33

通常的方法是在init.rb中要求控制器,并在它中定义自己的文件中的每个类,并在init中要求它,如下所示:

控制器/init.b:

代码语言:javascript
复制
# Load all other controllers
require __DIR__('my_controller')
require __DIR__('my_other_controller')

控制器/我的控制器.my:

代码语言:javascript
复制
class MyController < Ramaze::Controller
  engine :Erubis

  def index
    @message = "hi"
  end

  # this will be fetched via /mycontroller/hello
  def hello
    @message = "hello from MyController"
  end
end

控制器/my_other_控制员.my:

代码语言:javascript
复制
class MyOtherController < Ramaze::Controller
  engine :Erubis

  def index
    @message = "hi"
  end

  # this will be fetched via /myothercontroller/hello
  def hello
    @message = "hello from MyOtherController"
  end
end

您可以创建继承自的基类,这样就不必在每个类中重复engine :Erubis行(可能还有其他行)。

如果您想在'/‘URI上为MyController服务,可以将其映射到'/’:

代码语言:javascript
复制
class MyController < Ramaze::Controller
  # map to '/' so we can call '/hello'
  map '/'
  ...

您可以查看博客示例中的示例:https://github.com/Ramaze/ramaze/tree/master/examples/app/blog

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27935766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档