Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在lib类中呈现\u到\u字符串不起作用_Ruby On Rails_Templating - Fatal编程技术网

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
,它可以工作。