繁体   English   中英

ruby on rails在助手与控制器中的应用范围广泛的方法?

[英]ruby on rails application wide method in helper vs. controller?

我有几个变量,我希望所有控制器访问。 所以我在application_controller.rb中定义了它们:

      before_filter :initialize_vars

  def initialize_vars
    @siteTitle = "my title"
    @companyName = "company"    
  end

没有问题。 我想用徽标做类似的事情,所以我创建了另一个用before_filter调用的方法。

  def logo
    image_tag("Logo.jpg", :alt => "Logo")
  end

徽标img的一个实例应链接到站点根目录,因此我调用它:

<%=h link_to logo, root_path %>

但它在我的布局中不起作用! 当我将我的logo方法添加到application_helper.rb时,一切都很完美。 hhmmm。

什么/适合这些东西的适当位置? 我的意思是因为我能够使它工作不正确!

我应该在application_controller中定义我的实例变量(我将其视为全局变量)和我帮助器中的logo方法,就像我已经完成的那样? 我觉得我在这里缺少一些基本的理解,为什么他们需要去不同的地方。 我不确定我是否正在调用“徽标”方法或者我正在使用它。 我将使用我如何调用以及如何编写徽标方法,因为我觉得这两种方法都应该放在application_controller中。

想法?

谢谢!

与渲染视图相关的函数放在辅助文件中。 它们通常生成HTML内容。 如果在许多地方在应用程序中使用辅助方法,请将它们放在application_helper.rb ,否则必须将它们放在相应的帮助文件中。

由于您将在许多控制器中访问实例变量,因此可以像应用程序控制器一样在初始化它们。

Helper方法用于与视图相关的方法,因为它是使用帮助器方法的视图。 您看起来的实例变量应该重构为利用content_for然后在主布局文件中生成它们的方法。

http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for

http://railscasts.com/episodes/8-layouts-and-content-for

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM