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')
,该怎么办呢。这意味着我必须一路传递视图上下文?或者有更好的方法吗?您不必传递视图上下文。将自动包含所有帮助程序。如果一个助手从另一个助手调用一个方法,那么您在控制器中调用它,它们都将运行。