Ruby on rails Rails渲染到字符串
我在使用rails render_to_字符串函数时遇到困难。我已经使用--api标志创建了一个应用程序,所以我认为这可能是问题所在,因为我已经在“完整”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
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,使控制器中的所有渲染器都可用。”