Ruby on rails 如何访问lib目录rails 6中的params散列
在我的rails应用程序中,我使用Kramdown解析Markdown。我想扩展HTML转换器中Ruby on rails 如何访问lib目录rails 6中的params散列,ruby-on-rails,ruby,kramdown,Ruby On Rails,Ruby,Kramdown,在我的rails应用程序中,我使用Kramdown解析Markdown。我想扩展HTML转换器中convert\u a方法的功能。其中一部分涉及访问数据库,但它依赖于URL中的参数。因为我没有直接调用我要重写的方法,所以我不能简单地将paramshash传递给该方法。有没有办法访问这个散列,或者仅仅获取lib目录中模块中的当前URL 为了提供更多的上下文,方法调用位于以下帮助器方法中: #在app/helpers/myhelper.rb中 def to_html(文本) Kramdown::Do
convert\u a
方法的功能。其中一部分涉及访问数据库,但它依赖于URL中的参数。因为我没有直接调用我要重写的方法,所以我不能简单地将params
hash传递给该方法。有没有办法访问这个散列,或者仅仅获取lib
目录中模块中的当前URL
为了提供更多的上下文,方法调用位于以下帮助器方法中:
#在app/helpers/myhelper.rb中
def to_html(文本)
Kramdown::Document.new(文本,解析块\ html:true)。到\自定义\ html
结束
这是我覆盖转换a
的文件:
# in lib/custom_html.rb
class CustomHtml < Kramdown::Converter::Html
def convert_a(el, indent)
# use params[:foo] to make query
format_as_span_html(el.type, el.attr, inner(el, indent))
end
end
它随后对内部kramdown元素调用
convert#{el.type}
。您可以在kramdown::Document#new
中传递其他选项,所以只需执行类似于kramdown::Document.new(text,my_params:params)
。然后,您可以使用转换器的#options
方法访问您的参数。您可以显示使用该自定义HTML
类的代码吗?Kramdown gem会在内部使用该类。Kramdown具有由HTML转换器转换的文本的内部表示形式。我只是重写其中一个方法。我不知道它什么时候被精确地调用,我只知道它在克拉姆镇生命周期的某个时刻。威尔,我可以给你两个选择#1是你用“艰难的方式”修补整个方法链来传递你的参数数据#2是一种很有技巧的方法,您可以使用全局变量或线程变量之类的东西,而不必费心传递参数。对于一个业余爱好项目,我只会走老套的路。在生产中使用这种方法之前,您应该更深入地考虑它。请问,您试图有条件地实现什么行为?也许在转换完成后,使用Nokogiri之类的工具更容易操作HTML
output, warnings = Converter.const_get(name).convert(@root, @options)