Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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 Rails渲染到字符串_Ruby On Rails_Render To String - Fatal编程技术网

Ruby on rails Rails渲染到字符串

Ruby on rails Rails渲染到字符串,ruby-on-rails,render-to-string,Ruby On Rails,Render To String,我在使用rails render_to_字符串函数时遇到困难。我已经使用--api标志创建了一个应用程序,所以我认为这可能是问题所在,因为我已经在“完整”rails应用程序中进行了测试,并且它的工作情况很好 基本上,我是在打电话: body_html = render_to_string(template: 'reservations/print') 我也试过了 body_html = render_to_string('reservations/print') body_html = ren

我在使用rails render_to_字符串函数时遇到困难。我已经使用--api标志创建了一个应用程序,所以我认为这可能是问题所在,因为我已经在“完整”rails应用程序中进行了测试,并且它的工作情况很好

基本上,我是在打电话:

body_html = render_to_string(template: 'reservations/print')
我也试过了

body_html = render_to_string('reservations/print')
body_html = render_to_string(partial: 'reservations/print')
body_html = render_to_string(partial: 'reservations/print.html.erb')
它应该返回该模板的html。文件名为print.html.erb,只包含基本数据,即

<p> Hello world. </p>
你好,世界

当我输出body_html时,它是空的

我引用了这个问题,还将使用WickedPDF生成一个PDF文件


非常感谢

,但我不认为这是最好的解决方案,因为执行以下操作是有效的

ac = ActionController::Base.new()  

html_string = ac.render_to_string :template => 'path_to_file' e.g. 'post/show'
Rails API模式下的应用程序控制器文件继承自ActionController::API,因此我猜要呈现的功能在ActionController::Base中。如果有人知道需要哪个模块,我会更新这个答案吗

谢谢
鲁迪

你可以在行动中做类似的事情:

     respond_to do |format|
       format.html { render layout: 'your_layout' } # this is for your html responses if you need to respond with html
       format.json { # this block will execute for your json requests

        html = render_to_string action: :index, layout: false, :formats => [:html]
        render json: {data: html}
     }

这是适合我的解决方案:

render_to_string partial: 'participant_data.html.erb'
文件的名称必须如下所示:

tickets/_participant_data.html.erb

请尝试以下代码片段:

ActionController::Base.new.render_to_string("mailer/your-html-file", locals: { data: your-json-data-that-you-wanna-add-to-your-html-file })

引用,堆栈溢出问题。您是否尝试过只传递
预订/print
而不传递模板关键字?我认为
--api
标志不是问题所在。根据Rails Api上的文档,
AbstractController::Rendering
为默认值,此模块包含
render\u to\u string
方法。嗨,Dan,感谢您花时间回答。我有那个,还有一些。我将更新这个问题。很抱歉添加另一条评论,如果可能的话,我只是想重新审视一下。这不再需要了(但我还没有测试过)。请参阅,“ActionController::Base和ActionController::API都包含ActionController::Renders::All,使控制器中的所有渲染器都可用。”