Ruby on rails 在lib类中呈现\u到\u字符串不起作用
我正在尝试使用Ruby on rails 在lib类中呈现\u到\u字符串不起作用,ruby-on-rails,templating,Ruby On Rails,Templating,我正在尝试使用delayed_job通过xml更新远程数据库 在我的lib文件夹中,我放置了一个包含类的文件,该类应该使用template.xml.builder对文本进行渲染,但我得到: 未定义的#的方法“render_to_string”。。。 我做错了什么?在ActionController::Base中定义了渲染到字符串的。由于类/模块的定义不在Rails控制器的范围内,因此该函数不可用 您必须手动渲染该文件。我不知道你在模板中使用了什么(ERB、Haml等)。但是您需要加载模板并自己
delayed_job
通过xml更新远程数据库
在我的lib文件夹中,我放置了一个包含类的文件,该类应该使用template.xml.builder
对文本进行渲染,但我得到:
未定义的#的方法“render_to_string”。。。
我做错了什么?在ActionController::Base
中定义了渲染到字符串的。由于类/模块的定义不在Rails控制器的范围内,因此该函数不可用
您必须手动渲染该文件。我不知道你在模板中使用了什么(ERB、Haml等)。但是您需要加载模板并自己解析它
如果雇员再培训局是这样的:
require 'erb'
x = 42
template = ERB.new <<-EOF
The value of x is: <%= x %>
EOF
puts template.result(binding)
需要“erb”
x=42
template=ERB.new您可以将template.xml.builder
转换为部分(\u template.xml.builder
),然后通过实例化ActionView::Base
并调用render
来呈现它
av = ActionView::Base.new(Rails::Configuration.new.view_path)
av.extend ApplicationController.master_helper_module
xml = av.render :partial => 'something/template'
我还没有尝试过xml,但它可以很好地处理html部分。我遇到了一个未定义的助手方法的问题,然后我使用了ApplicationController
ac = ActionController::Base.new()
ac.render_to_string(:partial => '/path/to/your/template', :locals => {:varable => somevarable})
ApplicationController.new.render_to_string
轨道5
render_to_string
和其他方法现在可作为控制器上的类方法使用。因此,您可以使用您喜欢的任何控制器执行以下操作:ApplicationController.render\u to\u string
我特别需要根据对象的类为模板分配一个动态实例变量,因此我的示例如下所示:
ApplicationController.render_to_string(
assigns: { :"#{lowercase_class}" => document_object },
inline: '' # or whatever templates you want to use
)
制作rails PR的开发人员发表了一篇很棒的博文:I get:undefined方法'new'for rails::Configuration:modulei如果您试图将其与实例变量一起使用,请执行以下操作::locals=>{:@instance\u variable=>value}
我发现缺少模板错误,它似乎没有发现部分,我已经检查了很多次拼写。还是没什么。。请帮助您将获得“缺少模板”错误,因为ActionController::Base
将在action\u controller/Base
路径中搜索。委托给另一个控制器。它通常继承ActionController::Base
,这里也一样。您是否修复过未定义的帮助程序?在我的例子中,调用AplicationController时忘记了名称空间。我尝试:Usr::ApplicationController.new.render\u to\u string
,它可以工作。