Ruby on rails Rails在视图之外使用ActionView::Helper方法

Ruby on rails Rails在视图之外使用ActionView::Helper方法,ruby-on-rails,Ruby On Rails,我已经创建了一个用于文本操作的帮助器 module ApplicationHelper module TextHelper extend ActionView::Helpers end end 然而,当我在Rails控制台中运行ApplicationHelper::TextHelper.simple\u格式的“foo”时,我得到 NoMethodError: undefined method `white_list_sanitizer' for Module:Class

我已经创建了一个用于文本操作的帮助器

module ApplicationHelper

  module TextHelper

    extend ActionView::Helpers

  end
end
然而,当我在Rails控制台中运行
ApplicationHelper::TextHelper.simple\u格式的“foo”
时,我得到

NoMethodError: undefined method `white_list_sanitizer' for Module:Class
还有什么我需要包括的吗

我已经看过了,但没用


使用Rails 4,Ruby 1.9.3

如果您在控制台中,您应该能够只做
helper.simple\u格式('hi')
。控制台中提供了
helper
方法,作为调用某些helper方法的一种方式

使用自定义辅助对象时:

# app/helpers/custom_helper.rb
module CustomHelper
  def custom_method(x)
    puts "Custom method #{x}"
  end
end

# from the console
helper.custom_method('hi')

# from the controller
class SomeController < ApplicationController

  def index
    view_context.custom_method('hi')
  end
end
#app/helpers/custom_helper.rb
模块CustomHelper
def自定义_方法(x)
放置“自定义方法#{x}”
结束
结束
#从控制台
helper.custom_方法('hi')
#从控制器
类SomeController
如果您在控制台中,您应该能够只做
助手。简单的\u格式('hi')
。控制台中提供了
helper
方法,作为调用某些helper方法的一种方式

使用自定义辅助对象时:

# app/helpers/custom_helper.rb
module CustomHelper
  def custom_method(x)
    puts "Custom method #{x}"
  end
end

# from the console
helper.custom_method('hi')

# from the controller
class SomeController < ApplicationController

  def index
    view_context.custom_method('hi')
  end
end
#app/helpers/custom_helper.rb
模块CustomHelper
def自定义_方法(x)
放置“自定义方法#{x}”
结束
结束
#从控制台
helper.custom_方法('hi')
#从控制器
类SomeController
为什么要使用
extend
而不是
include
include
为ApplicationHelper::TextHelper:模块生成
NoMethodError:未定义的方法“simple\u format”
包含ActionView::Helpers::TextHelper
。这就是
simple\u格式的来源!我试过这里的例子。如果这就是您的意思?为什么您使用
extend
而不是
include
include
生成
NoMethodError:ApplicationHelper::TextHelper:Module
包含操作视图::Helpers::TextHelper
的未定义方法“简单格式”。这就是
simple\u格式的来源!我试过这里的例子。如果这就是你的意思?我使用控制台进行测试,我的最终目标是让其他数据编辑助手使用它。因此,你想创建自己的自定义助手,并使用自己的自定义方法,但能够看到它们在控制台中如何工作?是的。如果从控制器运行它,我会收到相同的错误。这确实有效,但是如果我想从从从控制器启动的另一个帮助程序调用
view\u context.custom\u方法('hi')
,该怎么办呢。这意味着我必须一路传递视图上下文?或者有更好的方法吗?您不必传递视图上下文。将自动包含所有帮助程序。如果一个助手从另一个助手调用一个方法,那么你在控制器中调用它,它们都将运行。我正在使用控制台进行测试,我的最终目标是让其他数据编辑助手使用它。所以你想创建自己的自定义助手,并使用自己的自定义方法,但能够看到它们在控制台中如何工作?是的。如果从控制器运行它,我会收到相同的错误。这确实有效,但是如果我想从从从控制器启动的另一个帮助程序调用
view\u context.custom\u方法('hi')
,该怎么办呢。这意味着我必须一路传递视图上下文?或者有更好的方法吗?您不必传递视图上下文。将自动包含所有帮助程序。如果一个助手从另一个助手调用一个方法,那么您在控制器中调用它,它们都将运行。