Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何访问lib目录rails 6中的params散列_Ruby On Rails_Ruby_Kramdown - Fatal编程技术网

Ruby on rails 如何访问lib目录rails 6中的params散列

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

在我的rails应用程序中,我使用Kramdown解析Markdown。我想扩展HTML转换器中
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)