ruby-on-rails - 如何使用 `class` 作为关键字参数?

标签 ruby-on-rails ruby

我想用 class 关键字参数编写 Rails 助手,如下所示:

special_link_tag body, url, class: 'special'

我不能引用 class 关键字,因为 class 是一个保留字:

def special_link_tag body, url, class: 'special'
  class ||= 'whatever' # error! 'class' is reserved
  :etc
end

我看到两个选项:

def special_link_tag(body, url, klass: 'special')
  klass ||= 'whatever'
  :etc
end

def special_link_tag(body, url, **options)
  klass = options[:class]
  klass ||= 'whatever'
  :etc
end

两个我都不喜欢。第一个与 Rails 助手不一致。第二种更好,但并不理想,因为现在我需要明确检查我不支持的关键字参数,否则可能会无提示地失败。我是否遗漏了什么,或者是第二种方法?

最佳答案

从 Ruby 2.1 开始,您甚至可以使用 Binding#local_variable_get 访问名为 class 的关键字参数像这样:

def special_link_tag(body, url, class: 'special')
  "class = " + binding.local_variable_get(:class)
end

关于ruby-on-rails - 如何使用 `class` 作为关键字参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30984658/

相关文章:

ruby-on-rails - 从 Rails 5.1 升级到 5.2 时,如何更新 Gemfile?

ruby - 如何将文件内容复制到另一个文件?

javascript - 如何通过 ruby​​ on Rails 中的关联获取另一列的值?

ruby-on-rails - 如何在 Ruby on Rails 中循环几个月

ruby-on-rails - 如何获取 Rails 模型中必填字段的列表?

ruby-on-rails - 如何在 Docker 中运行 Rails? PG::ConnectionBad 无法将主机名 "pg"转换为地址:没有与主机名关联的地址

javascript - querySelectorAll 在 Rails 5 中不起作用

ruby-on-rails - Rails 3 facebook 插件/ gem ?

ruby - 如何在 Ruby 的时间序列中规范化和插入缺失值?

ruby-on-rails - 需要 Ruby 和 Rails 编码标准的建议