Ruby on rails 3 在rails 3的视图中使用帮助器方法

Ruby on rails 3 在rails 3的视图中使用帮助器方法,ruby-on-rails-3,Ruby On Rails 3,关于rails 3,有些事情让我有点不安。 我正在尝试将我的应用程序从rails 2升级到rails 3 我遵循了所有必要的步骤,到目前为止,一切都很顺利,除了一件事: 我有一个helper方法,它在不同的helper中定义不同,例如它在应用程序中以一种方式定义,在主页中以不同的方式定义相同的方法,在另一个helper中以不同的方式定义,比如说video\u helper,除此之外,它是在整个应用程序中使用的共享视图中使用的,现在,如果我在主页中,我希望这个函数从主页辅助程序调用,如果我在视频页

关于rails 3,有些事情让我有点不安。 我正在尝试将我的应用程序从rails 2升级到rails 3

我遵循了所有必要的步骤,到目前为止,一切都很顺利,除了一件事:

我有一个helper方法,它在不同的helper中定义不同,例如它在应用程序中以一种方式定义,在主页中以不同的方式定义相同的方法,在另一个helper中以不同的方式定义,比如说video\u helper,除此之外,它是在整个应用程序中使用的共享视图中使用的,现在,如果我在主页中,我希望这个函数从主页辅助程序调用,如果我在视频页面中,这个函数必须从视频辅助程序调用,基于rails中的约定概念,这在rails 2中非常有效,但在rails 3中,该函数总是从最后一个助手(按字母顺序)调用,即示例中的video_helper

我怎样才能解决这个问题? 好心的建议


感谢所有帮助。

在rails 3中,始终加载所有帮助程序

您可以:

1) 请以不同的方式命名您的助手

2) 明确定义所需的帮助程序


3) 从帮助程序中检查控制器,以确定要提供的帮助程序。

如果我正确理解了您的帖子,您可以

module ApplicationHelper
  def error_messages
    ...
  end
end

module VideoHelper
  def error_messages
    ...
  end
end

module HomepageHelper
  def error_messages
    ...
  end
end
现在,您希望从特定的助手调用error_消息,并且任意调用error_消息的行为与Rails 2中的行为不同。到目前为止我说的对吗?如果没有,你可以忽略这篇文章的其余部分

我只花了半个小时在irb中玩语法和我的一个项目,我能得到的最接近的方法是Posts::PostsHelper.helper_方法,如果我先“包括PostsHelper”,它在irb中工作


话虽如此,如果您愿意像Class::ClassHelper.helper\u方法这样做,为什么不重命名“helper\u方法”以便它对您的ClassHelper是唯一的呢?无论如何,您必须将每个“helper\u method”调用更改为特定于某个helper。我认为这是一个更干净的解决方案

非常感谢您的帮助,最后有人回答我:)选项1对我的代码不起作用,但我如何尝试其他两个选项?我尝试了包含helper方法,但没有一种方法对我有效,感谢您对方法2的帮助,使用
清除\u helpers
,然后像往常一样指定要包含的helper。