我正在使用Rails渲染R降价文件以生成报告。我有来自Controller的实例变量。
。Rmd文件在views文件夹中。我在控制器下面打电话
File.read('path/to/file_name')
读取.Rmd文件。下面是无法正常运行的.Rmd文件的片段。
---
title: "Result Report"
params:
selected_id: <%= "#{@result_id}" %>
selected_gene: <%= "#{@gene}" %>
selected_experiment: <%= "#{@experiment.id}" %>
想知道如何实现。在这里停留了一段时间。任何想法都欢迎。谢谢。
由于您提到控制器,我猜您想在浏览器中生成报告。
假设您现在要查看实验的网址是/experiments/32/show
您可以使用类似的扩展名/experiments/32/show.report
查看生成的报告
要实现您需要三件事
# app/controllers/experiments_controller.rb
class ExperimentsController < ApplicationController
def show
@experiment = Experiment.find(params[:id])
@gene = ...
@result_id = ...
respond_to do |format|
format.html
format.report
end
end
end
report
MIME类型按照指示in the rails guides您需要在初始化程序mime_types.rb
中添加一行(如果没有,请创建一个空文件)
# config/initializers/mime_types.rb
Mime::Type.register "application/rtf", :report
# app/views/experiments/show.report.erb
---
title: "Result Report"
params:
selected_id: <%= @result_id %>
selected_gene: <%= @gene %>
selected_experiment: <%= @experiment.id %>
我找到了一个简单的解决方案。您必须先阅读文件,然后才能使用gsub替换所需的内容。
rmd_file = File.read("path/to/rmdFile")
rmd_file.gsub!('print_selected_gene', "\"#{@gene}\"")
通过这种方式,您可以随时替换文件。