【问题标题】:How to access one variable across the page in ruby?如何在 ruby​​ 中跨页面访问一个变量?
【发布时间】:2016-08-18 11:13:58
【问题描述】:

现在我是 ruby​​ 语言的新手。目前正在学习红宝石。我是 PHP 专家。基本上我在 CakePHP 工作。 CakePHP 和 Ruby 的目录结构大致相同。但我对 Ruby 代码有点困惑。

在 CakePHP 中,当我在 bootstrap.php 中定义任何变量时,我正在整个站点中获取此变量。

假设我有一个变量名$gallery_path = 'files/gallery/'; 如果我在控制器、模型和视图中有echo $gallery_path。我正在获取我的画廊路径。

但在 ruby​​ 中,我无法定义任何变量,例如 php bootstrap.php 请建议我。

【问题讨论】:

  • 您正在寻找全局变量...
  • @SuperPeanut 不,全局变量不是这里的答案。
  • 您要定义什么样的变量? Ruby 强烈鼓励人们将它们组织成模块或类,以简化访问并防止它们发生冲突。
  • Chinu 在 PHP 中所说的称为全局变量。所以他的问题是:如何在 Ruby 中使用 PHP 的全局变量功能...

标签: php ruby-on-rails ruby cakephp


【解决方案1】:

对于频繁更改的内容,您需要不时对其进行编辑,但不经常更改,您可以使用简单的module

你可以这样开始:

module SiteConfiguration
  mattr_accessor :site_name
  mattr_accessor :payment_provider
end

然后你可以在config/environment.rb中配置:

SiteConfiguration.site_name = 'The Site'
SiteConfiguration.payment_provider = 'PayPal'

这些在您的应用中随处可见。

【讨论】:

  • 你能说说module Siteconfiguration吗?
  • 我收到错误消息uninitialized constant ApplicationController::SiteConfiguration
  • @Chinu 您需要将site_configuration.rb 放在自动加载的位置。 app/concerns 是一个经常检查的地方。
  • 好的。让我知道如何在我的布局中获取网站名称?
  • 这就像你对任何东西一样:<%= SiteConfiguration.site_name %>.
【解决方案2】:

你可以使用环境变量,试试这个 gem:https://github.com/bkeepers/dotenv 或者你可以定义它们:

ENV["host"] = "localhost:3000"

【讨论】:

    【解决方案3】:

    你的application_controller.rb应该写在下面

    $gallery_path = 'files/gallery/';
    

    您的视图文件

    <%=$gallery_path %>
    

    【讨论】:

    • 这非常混乱,应该是绝对的最后手段。在 Ruby 中,全局变量的使用非常非常谨慎。
    【解决方案4】:

    我认为您的意思是全局变量。在 Ruby-on-Rails 中,您可以像

    一样编写它

    控制器:

    @value = 2+1
    

    HTML:

    <%= @value %>
    

    所以您在浏览器中的输出将是“3”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      相关资源
      最近更新 更多