#ruby-on-rails #friendly-id
#ruby-on-rails #дружественный идентификатор
Вопрос:
У меня возникла проблема с добавлением @
символа slug
в мое приложение Rails.
Вот код из 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? amp;amp; username_changed?
end
## Friendly_id: add @ to slug
def custom_slug
"@#{username}"
end
Он отлично работает с любой другой строкой, но по какой-то причине он не позволяет мне добавлять @
перед слизняком. Первоначальная идея состоит в том, чтобы получить приятный URL
для каждого пользователя, например, www.website.com/@username
Есть ли какой-либо способ разрешить friendly_id
добавление @
символа?
PS: Если вы считаете, что это плохая идея, я бы тоже хотел это знать.
Ответ №1:
Символ @ является зарезервированным символом в URL-адресах, что означает, что он имеет особое значение. Если вы хотите использовать его как простую часть URL-адреса без специального значения, сначала он должен быть закодирован в процентах. Смотрите https://www.ietf.org/rfc/rfc3986.txt разделы 2.1 и 2.2