在 Redcarpet 中使用 Markdown 中的 ERB

2023-11-26

我正在尝试让 Markdown 与 .erb 很好地配合。我想使用 high_Voltage 来渲染用 Redcarpet 解析的 markdown 页面(或带有 markdown 部分的普通 .html.erb 文件),并且正在努力使其全部协同工作。

目前我有一个名为markdown_template_handler.rb其中包含以下代码:

class MarkdownTemplateHandler
  def erb
    @erb ||= ActionView::Template.registered_template_handler(:erb)
  end

  def call(template)
    compiled_source = erb.call(template)
    markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)

    "#{markdown.render(compiled_source.source).inspect}.html_safe;"
  end
end

ActionView::Template.register_template_handler(:md, MarkdownTemplateHandler.new)

然而它在第 7 行失败了,compiled_source = erb.call(template)错误代码显示“参数数量错误(给定 1,预期 2)”

我看了看ERB Ruby 文档但据我了解, call 方法是新方法的派生,它只需要 1 个参数,即文本。但是,当我尝试在快速 Rails 控制台会话中使用它时,它还需要两个参数。

当我从上面的代码中删除解析 erb 的要求时,一切都按预期工作,所以我认为这与 Redcarpet 不工作有任何关系。

我正在使用 Rails v6.0.0.rc1 和 Ruby v2.5.3p105

任何帮助表示赞赏。

Edit

进一步的研究使我发现Rails 6.0 ERB ActionView 模板处理程序。该处理程序的调用方法确实需要两个参数:模板和源。也就是说,在Rails 5.2.3,ERB Action View 模板处理程序调用方法只需要一个参数,即模板。

有人可以指出我弄清楚什么的方向吗source是在这种背景下吗?我找不到相关的文档。



在这种情况下,源将被传递到call当处理程序被调用时由 ActionView 执行。

你会重写你的call像这样的函数:

def call(template, source)
  compiled_source = erb.call(template, source)
  markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)

  "#{markdown.render(compiled_source).inspect}.html_safe;"
end

在 Rails 6 之前,source值提取自template.source,但现在它作为单独的参数传递。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Redcarpet 中使用 Markdown 中的 ERB 的相关文章

  • 如何在 Rails 6 中禁用 TurboLinks?

    所以我面临这个问题 我的服务器实际上从客户端的请求中检索了正确的数据 并将这些数据发送到浏览器 我可以清楚地看到它可用于浏览器 CTRL SHIFT C gt Network gt my request 但是 浏览器不会刷新 所以我现在看到
  • 使用Rails UJS,如何从函数提交远程表单

    我正在使用Rails UJS 我有一个表单设置来进行远程提交 如下所示
  • 为什么 Rails 5 将“索引”更改为“外键”?

    如果你在 Rails 4 中有这个 t references event index true 现在你可以使用foreign key代替index在 Rails 5 中 我不太明白为什么他们决定这样做 因为功能保持不变 您添加的是索引 而不
  • 错误“未初始化常量 AWS (NameError)”

    它说 AWS 未初始化 我正在使用 aws sdk core gem 我尝试使用 aws sdk gem 代替 问题仍然存在 这是initializers aws rb 文件 AWS config access key id gt ENV
  • Memcachier 达到缓存限制时 Heroku 请求超时

    我使用 Memcachier Dalli 作为客户端 将 Rails 应用程序部署到 Heroku 我正在使用免费插件 提供 25 MB 缓存 我们开始收到来自heroku的请求超时 经过调试 我们发现手动刷新Memcachier解决了问题
  • 使用 Minitest 测试自定义验证器

    我有多个带有电子邮件验证的模型 因此 我将验证提取到自定义验证器中 我按照以下教程做到了这一点导轨指南 http guides rubyonrails org active record validations html custom va
  • 设备注册控制器获取零资源的自定义操作

    基本上我想要有两个单独的操作来更改密码和更改电子邮件 而不是只有一个 我已经更新了我的路由以指向继承自 Devise RegistrationsController 的新控制器 我的路线 rb devise for users contro
  • 如何创建与 ActiveResource 对象的 ActiveRecord 关系?

    假设我正在为一家已经拥有 People 应用程序的出版公司编写一个图书馆应用程序 所以在我的图书馆应用程序中我有 class Person lt ActiveResource Base self site http api people m
  • Twitter Bootstrap 中下拉链接的模态

    我正在尝试从下拉菜单中的链接进行模式启动 该模式似乎已启动 网站变为灰色 但看不到 来自不在下拉列表中的常规链接的模态工作得很好 我对 jquery 进行了愚弄 但由于我是 jquery 的新手 所以没有任何结果 这是我的网站代码
  • 数据库分片和 Rails

    在 Rails 中处理分片数据库的最佳方法是什么 分片应该在应用层 活动记录层 数据库驱动层 代理层还是其他层处理 各自的优点和缺点是什么 FiveRuns 有一个名为的 gem数据结构 https github com bpot data
  • Rails Capistrano 3 - 如何将 production.log 文件共享到 Capistrano 的共享文件夹中?

    我正在使用 Capistrano 3 与我的 Rails 应用程序一起部署 问题是 每次我将应用程序部署到服务器时 log development log 文件都会重置 我听说可以将 production log 文件放入共享文件夹中并在每
  • Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对茉莉花有经验并且非常喜欢它 有谁有 Jasmine 和 Mocha 的经验 特别是 Rails 的经验吗 我想知道是否值得转用 我已经在 J
  • Rails - 安装 Spree 时出现问题

    我在 Rails 应用程序中安装 Spree 时遇到问题 当我运行 gem spree 时 按照说明http spreecommerce com documentation getting started html http spreeco
  • 为什么||和 或 在 Rails 中的行为有所不同? [复制]

    这个问题在这里已经有答案了 可能的重复 i true 和 false 在 Ruby 中是真的吗 https stackoverflow com questions 2802494 i true and false in ruby is tr
  • 多次部署后 Heroku Slug 大小

    我有一个红宝石 on Rails非常接近 slug 大小限制 300mb 的应用程序 我已经尽可能地减小了尺寸 slugignore但还没有得到我想要的结果 一时兴起 我尝试创建一个新的Heroku应用程序并向其部署相同的 git 存储库
  • Capybara with Rails:如何仅查找不可见元素

    我正在 Rails 项目 Rails 5 2 0 中使用 Capybara capybara 3 1 0 进行系统测试 确保元素不可见的方法是什么 我当时用的是visible false选项 直到我发现它也匹配可见元素 例如我使用 find
  • 使用 Passenger + Apache 相对于 Webrick 的优势

    我想说服我的管理层 使用 Apache 乘客设置是继续生产的方法 而不是使用 webrick 或 mongrel 我从网上找到了一些观点 如果您能添加您的想法 那将非常有帮助 因为这将有力地帮助我表达我的观点 欢迎提供技术细节 如果您有任何
  • 将 Rack::Deflater 插入机架中的哪个位置?

    我目前有以下内容 use Rack Rewrite use Rack Cache verbose gt true metastore gt memcached localhost 11211 rack cache meta entityst
  • Rails 3 SSL 路由从 https 重定向到 http

    这个问题与此相关SO 问答 rails 3 ssl deprecation https stackoverflow com questions 3634100 rails 3 ssl deprecation建议使用routes rb和类似的
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该

随机推荐

  • libpng 1.5.10 错误:取消引用指向不完整类型的指针

    png read info png ptr info ptr png byte color type info ptr gt color type png byte bit depth info ptr gt bit depth 对于最后两
  • 在 Javascript 中反序列化 PHP 数组

    我有一个表 其中包含一系列序列化数组的行 我计划请求并将其传递给JavaScript 问题是 是否有可能unserialize使用 JavaScript 而不是 PHP 否则 我将不得不加载所有行 循环它们并反序列化它们 并将它们分配给一个
  • kubernetes - 将入口流量路由到某些路径的特定 Pod

    我有多个 Pod 可以自动扩展和缩小 我使用入口作为入口点 我需要根据某些条件 比如说路径 将外部流量路由到特定的 Pod 在发出请求时 我确信特定的 Pod 已启动 例如 假设我有域 someTest com 通常将流量路由到 pod 1
  • 如果值是由触发器生成的,如何注释 Id 列?

    我设置了 Oracle XE 10g Hibernate 3 5 JPA 2 0 有一个带有主键的简单表 由数据库触发器在插入时生成 触发器从序列中获取值 触发器 序列构造是由Oracle XE 完成的 实际的问题是 在 EntityMan
  • devtools::check() 上的包导入错误

    我有一个包 其中在描述文件中包含以下包导入 Imports lubridate assertthat R6 stringr I don t使用以下命令将它们导入到我的包的命名空间中import pkgname or importFrom p
  • 如何在不创建数组的情况下使用 NgFor 来生成矩阵 UI 模式

    我想实现 UI 矩阵模式 它应该动态生成 通过接收输入参数 它应该决定 UI 矩阵图案的尺寸 例如 9X3 元素 图案 9x3 元素 我使用 Angular2 js typescript SCSS html 模板及其外观 import Co
  • 使用 sed 或 awk 修复日期格式

    我正在尝试使用以下方法将包含表格的 HTML 转换为 csv 文件bash script 到目前为止我已经完成了以下步骤 转换为 Unix 格式 使用dos2unix 删除所有空格和制表符 使用sed s t g 删除所有空行 用sed a
  • 如何从特定矩形区域内的 pdf 文档中提取文本? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我必须从特定矩形区域内的 pdf 文档中提取文本 工作流程如下 首先将pdf转换为jpg图像 然后用户在图片顶部绘制选择矩形 然后我需要以某种方式从
  • MVP 中的模型需要上下文

    在 android 中使用 MVP 时 我需要使用模型中的活动上下文来获取所有已安装应用程序的列表 访问上下文的正确方法是什么 或者在遵循 MVP 模式的同时实现相同目的的任何替代方法是什么 以下是课程 主要活动 java public c
  • Python 函数定义中 -> 是什么意思?

    我最近在看的时候发现了一些有趣的事情Python 3 3 语法规范 funcdef def NAME parameters gt test suite Python 2 中缺少可选的 箭头 块 我在 Python 3 中找不到有关其含义的任
  • onclick按钮时如何清除编辑文本

    如何清除单击按钮时动态提供给 EditText 的数据 我该如何编写代码 我使用什么功能或方法 Try public void clear View v edittext setText Where clear被注册为布局文件中按钮的 on
  • jquery:用跨度替换输入

    我试图用包含输入值的跨度替换输入 以便能够在单击按钮时将它们切换回来 我认为这最容易分两个阶段完成 添加 span input value span 在输入前面 然后隐藏输入 唯一的问题是我在第一部分遇到了麻烦 我正在尝试类似的事情 con
  • 从视图创建表 - Oracle SQL SQL 错误:ORA-01723:不允许使用零长度列

    我需要从视图创建一个表 语句如下 CREATE TABLE NEW TABLE AS SELECT from VIEW 它给出如下错误消息 无法从视图创建表 使用 Select 语句 Error report SQL Error ORA 0
  • error_get_last() 和自定义错误处理程序

    odbc errormsg不报告错误消息odbc execute就像它应该的那样 它只是发出警告 所以我被迫编写一个 hack 来解析错误消息error get last 我在用着set error handler and error ge
  • 选项卡中的 Google 图表 - 隐藏选项卡中的图表大小和位置不正确

    我有一组两个选项卡 每个选项卡内都有一个 Google 图表 这两个图表的大小和位置应该相同 加载页面后 图表的位置就是我想要的位置 无论您最初位于哪个选项卡 然后 当您移动到另一个选项卡 最初隐藏 时 图表的位置和大小会发生变化 您可以在
  • 是否应该关闭 JPA 实体管理器?

    我有下面的方法 public Profile readUser String email EntityManager em EMF get createEntityManager return em find Profile class e
  • UIViewController 转换 - Objective-C

    I have UIViewControllersA和B 它们被分配在AppDelegate 我需要对他们应用过渡 如何在不重新分配和更换的情况下传输它们UIViews 这段代码从我的调用UIBarButtonItem in UINaviga
  • 给定一个 CIImage,将图像数据写入磁盘的最快方法是什么?

    我正在使用 PhotoKit 并实现了用户可以应用于其照片库中的照片的过滤器 我目前正在获取图像 应用过滤器 将编辑后的版本返回为CIImage 然后我将CIImage into NSData using UIImageJPEGRepres
  • Spring-boot 和 Spring-Kafka 兼容性矩阵

    我正在寻找 Spring 框架不同部分的兼容性矩阵 更具体地说 我正在寻找与 Spring boot 1 5 2 兼容的最新 Spring Kafka 版本 我发现了一个旧的 Spring 兼容性矩阵 但该矩阵是 2014 年的 因此已弃用
  • 在 Redcarpet 中使用 Markdown 中的 ERB

    我正在尝试让 Markdown 与 erb 很好地配合 我想使用 high Voltage 来渲染用 Redcarpet 解析的 markdown 页面 或带有 markdown 部分的普通 html erb 文件 并且正在努力使其全部协同