我在使用rails render_to_string函数时遇到了困难。我使用--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时,它是空的。
我引用了这个问题What is the correct way to render_to_string in wicked pdf?,我也将使用Wicked PDF生成pdf文件。
非常感谢
答案 0 :(得分:3)
虽然我不认为这是做下面工作的最佳解决方案。
ac = ActionController::Base.new()
html_string = ac.render_to_string :template => 'path_to_file' e.g. 'post/show'
Rails API模式下的Application Controller文件继承自ActionController :: API,因此我想渲染的功能在ActionController :: Base中。如果有人知道Base需要哪个模块,我会更新这个答案吗?
由于 鲁迪
答案 1 :(得分:0)
您可以在操作中执行以下操作:
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}
}
答案 2 :(得分:0)
这是适合我的解决方案:
// Given "input" is your Dictionary<string,Dictionary<string,object>>
var result = input.OrderBy(kv => kv.Value["Temp"]);
文件必须这样命名:
render_to_string partial: 'participant_data.html.erb'
答案 3 :(得分:0)
试试下面的代码片段:
ActionController::Base.new.render_to_string("mailer/your-html-file", locals: { data: your-json-data-that-you-wanna-add-to-your-html-file })