r - 将 rails 变量传递给 .Rmd 文件以呈现 R 降价
问题描述
我正在使用 rails 渲染 R markdown 文件以生成报告。我有来自控制器的实例变量。
.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}" %>
想知道如何实现它。在这里卡了一段时间。欢迎任何想法。谢谢。
解决方案
我猜你想在浏览器中生成报告,因为你提到了一个控制器。
假设您现在查看实验的 URL 是
/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 类型
按照rails guides中的说明
您需要在初始化程序中添加一行mime_types.rb
(如果没有,请创建一个空文件)
# config/initializers/mime_types.rb
Mime::Type.register "application/rtf", :report
- 使用 ERB 创建 .report 模板
# app/views/experiments/show.report.erb
---
title: "Result Report"
params:
selected_id: <%= @result_id %>
selected_gene: <%= @gene %>
selected_experiment: <%= @experiment.id %>
推荐阅读
- android - 未捕获的翻译错误:com.android.dx.cf.code.SimException 需要 --min-sdk-version >= 26
- performance - 有没有办法在 Redis on AWS (ElastiCache) 中启用延迟监控阈值?
- rx-java2 - RxJava2 是否需要在 Create() 发射器上尝试/捕获?
- python - 从 SuperClass 访问 Django 子类方法
- excel - Excel 函数宏:创建下拉列表
- sql - 如何获取表中所有列的计数(*)?使用 PostgreSql
- node.js - 安装节点新版本并尝试更新 npm 后 - 在 Windows 中出现错误 MODULE_NOT_FOUND
- git - 使用访问令牌从自己的 bitbucket 服务器克隆 git 存储库会导致端口号错误
- charles-proxy - Charles Proxy:映射到 GET 请求而不是 OPTIONS
- ios - 绘制到 CGContext 时如何设置 UIBezierPath 的线宽?