gpt4 book ai didi

ruby-on-rails - 如何更改 Rails 参数化中的分隔符

转载 作者:行者123 更新时间:2023-12-05 01:18:42 25 4
gpt4 key购买 nike

这似乎是个愚蠢的问题,但我如何在 Rails 中使用 parameterize?我看过这个文档:http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize

在我的模型中,我可以让 string.parameterize 工作,但我不明白如何使用 separator 参数。 parameterize(string, separator: '') 说我不能在 main 上使用 parameterize,string.parameterize(separator: '') 说不能隐式转换哈希到字符串

最佳答案

string.parameterize 没有指定任何字符会给你你的字符串由单词分隔,删除任何不是字母的字符,并用 '-' “连接”它们:

string = 'Donald E. Knuth'
string.parameterize
# => "donald-e-knuth"

这种指定分隔符的方式:

string.parameterize(separator: '*')
# => donald*e*knuth

该方法使用 I18n.transliterate 方法对传递的字符串进行操作,然后应用破坏性的 gsub! 将检查任何非字母字符并应用替换, 就像做:

# without separator specified
I18n.transliterate(string).gsub!(/[^a-z0-9\-_]+/i, 'separator')
# => Donald-E-Knuth

这样一来,如果没有指定分隔符,该方法的第三个参数已经定义了一个:

def parameterize(string, sep = :unused, separator: '-', preserve_case: false)
...
end

请注意,使用的首先是 string,然后是 parameterize 方法调用,这与文档中的示例不同。

注意:在 ruby​​ 2.3.1 和 Rails 5.0.2 上测试它运行良好,Rails 4.2.5, 4.2 .6(如您所说)和 4.2.7 抛出此错误:

Loading development environment (Rails 4.2.5)
> string = 'x y z'
# => "x y z"
> string.parameterize(separator: '*')
TypeError: no implicit conversion of Hash into String

在 Rails < 5 中,它必须用作 ActiveSupport::Inflector.parameterize(string, separator):

> @item = Item.first
# => #<Item id: 1, name: "new item" ...>
> ActiveSupport::Inflector.parameterize(@item.name, '*')
# => "new*item"

关于ruby-on-rails - 如何更改 Rails 参数化中的分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43378319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com