在 Rails 上将 @ 添加到 friendly_id slug Ruby
Add @ to friendly_id slug Ruby on Rails
我在 Rails 应用程序中将 @
符号添加到 slug
时遇到问题。
这是来自 user
模型的代码:
validates_format_of :username, with: /^[a-zA-Z0-9_.](?!\w*__\w*)\w+$/, multiline: true
extend FriendlyId
friendly_id :custom_slug, use: :slugged
## Friendly_id: change slug if user's username updated or slug is blank
def should_generate_new_friendly_id?
slug.blank? && username_changed?
end
## Friendly_id: add @ to slug
def custom_slug
"@#{username}"
end
它适用于任何其他字符串,但出于某种原因,它不允许我在 slug 前面添加 @
。最初的想法是为每个用户得到一个漂亮的URL
,例如www.website.com/@username
有没有办法让friendly_id
添加@
符号?
PS:如果你认为这是个坏主意,我也很想知道。
@字符是URL中的保留字符,具有特殊含义。如果你想把它作为 URL 的简单部分,没有特殊含义,它必须先进行百分号编码。请参阅 https://www.ietf.org/rfc/rfc3986.txt 部分 2.1 和 2.2
我在 Rails 应用程序中将 @
符号添加到 slug
时遇到问题。
这是来自 user
模型的代码:
validates_format_of :username, with: /^[a-zA-Z0-9_.](?!\w*__\w*)\w+$/, multiline: true
extend FriendlyId
friendly_id :custom_slug, use: :slugged
## Friendly_id: change slug if user's username updated or slug is blank
def should_generate_new_friendly_id?
slug.blank? && username_changed?
end
## Friendly_id: add @ to slug
def custom_slug
"@#{username}"
end
它适用于任何其他字符串,但出于某种原因,它不允许我在 slug 前面添加 @
。最初的想法是为每个用户得到一个漂亮的URL
,例如www.website.com/@username
有没有办法让friendly_id
添加@
符号?
PS:如果你认为这是个坏主意,我也很想知道。
@字符是URL中的保留字符,具有特殊含义。如果你想把它作为 URL 的简单部分,没有特殊含义,它必须先进行百分号编码。请参阅 https://www.ietf.org/rfc/rfc3986.txt 部分 2.1 和 2.2