如何通过任意erb文件访问任意视图助手的方法?

时间:2011-07-09 14:35:43

标签: ruby-on-rails ruby-on-rails-3 view helper

按照惯例,Rails只“附加”视图助手,它对应于调用erb文件的控制器。

如何在Rails中访问视图助手的任意视图助手的方法?

2 个答案:

答案 0 :(得分:2)

如果您需要这样做,代码组织有问题。相反,将您的两个视图所需的辅助方法移动到一个公共模块中,并在两个模块中包含该模块。

例如,如果你有:

module ApplesHelper
  def flavor_of(fruit)
  end
end

并且您希望/ bananas视图可以访问flavor_of方法,然后执行此操作:

module Flavored
  def flavor_of(fruit)
    # ...
  end
end

module ApplesHelper
  include Flavored
end

module BananasHelper
  include Flavored
end

更新:我意识到我并没有直接回答原来的问题。在视图中包含另一个帮助程序的方法是使用helper

class BananasController ...
  helper ApplesHelper
end

现在所有/ bananas视图也可以使用ApplesHelper方法。

答案 1 :(得分:1)

如果我理解了这个问题,你必须用以下方法定义你的方法助手:

module ControllerHelper
   def function_you_have_to_call
      some_code_here
   end
end

如果要通过* .erb文件调用方法助手,则必须在视图中插入它:

<% function_you_have_to_call %>

如果您的方法有返回值,并且您想将其存储在视图中定义的局部变量中,请尝试:

<% value_you_want = function_you_have_to_call %>

请记住,<% %>包含的代码仅由ruby解释,而不是由视图显示。在这种情况下,您必须使用<%= %>包含的代码。

现在您可以访问value_you_want并可能用于语句。