许多 Rails 标记助手(例如 content_tag 等)使用名为 class
的哈希选项参数来指定 HTML 类。
content_tag(:div, content_tag(:p, "Hello world!"), class: "strong")
对于新代码,我想使用关键字参数,但是当其中一个是语言关键字时,这可能吗?
例如对于假设的
link_tag
。def link_tag(url, class: nil)
html = ''
html << '<a href="' << url << '"'
html << ' class="' << class << '"' if class
...
def link_tag(url, opts={})
html = ''
html << '<a href="' << url << '"'
html << ' class="' << opts[:class] << '"' if opts[:class]
...
最佳答案
有点儿。但是,您必须通过避免在代码中使用字面量关键字来避免混淆 Ruby 词法分析器。在 Ruby 2.2+ 中,您可以使用 binding.local_variable_get
解决它:
def link_tag(url, class: nil)
format('<a href="%s" class="%s"></a>', url, binding.local_variable_get(:class))
end
link_tag("http://stackoverflow.com", class: "fancy")
# => "<a href=\"http://stackoverflow.com\" class=\"fancy\"></a>"
然而,这并不是一种非常干净的做事方式,并且可能会令人困惑。如果我要使用关键字 args(即
css_class
或传统的 klass
等),我只会尝试重命名我的参数,以免与语言冲突。关于ruby - 是否可以在 Ruby 中使用名为 `class` 或其他保留名称的关键字参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45653959/