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