Я использую Friendly-Id
gem
для создания симпатичных URL-адресов. Я хотел бы создать чувствительные к регистру URL-адреса и перенаправить все другие версии одного и того же URL-адреса по умолчанию с статусом 301
.Как сделать чувствительные к регистру URL-адреса с Rails/Friendly-Id?
/profile/Jack-Wild # default URL
/profile/jack-wild # redirect to /profile/Jack-Wild
/profile/jaCk-Wild # redirect to /profile/Jack-Wild
Friendly_Id
слизни downcase, и только спичка и принимает downcase URL-адрес, 404
ИНГ всего остального.
Возможное решение: поддерживать slug_case_sensitive
(Jack-Wild), а также версию по умолчанию slug
(jack-wild).
Затем сделать Friendly_Id
поиска по slug
колонке с params[:id].downcase
и если params[:id] != slug_case_sensitive
перенаправление с предпочтительной URL (/profile/slug_case_sensitive
).
Это моя идея о том, как добиться этого, с помощью нескольких головоломок отсутствует, надеясь кто-то может помочь их заполнению.
Измените Методы создания и обновления пули, чтобы создавать и обновлять обе версии сгустка. Это будет только один метод: set_slug
:
# Sets the slug.
def set_slug(normalized_slug = nil)
if should_generate_new_friendly_id?
candidates = FriendlyId::Candidates.new(self, normalized_slug || send(friendly_id_config.base))
slug = slug_generator.generate(candidates) || resolve_friendly_id_conflict(candidates)
send "#{friendly_id_config.slug_column}=", slug
end
end
private :set_slug
Пусть пробкового не downcased. Если изменение: send "#{friendly_id_config.slug_column}=", slug
с: send "#{friendly_id_config.slug_column}=", slug.downcase
send "#{friendly_id_config.slug_column_case_sensitive}=", slug
быть достаточно? Также, как добавить и установить friendly_id_config.slug_column_case_sensitive
вариант?
И затем, измените user_path(@user)
и <%= link_to "My profile", current_user %>
, чтобы вернуть URL-адрес, чувствительный к регистру. Но не знаю лучшего способа, чем user_path(id:@user.slug_case_sensitive)
, который является уродливым, а также я должен был бы изменить его повсюду и не уверен, что это можно сделать в сторонних драгоценных камнях ...
Любые идеи по этому вопросу помогут и будут высоко оценены , Благодаря!
Это не только первые буквы, которые я пытаюсь получить, возможно, примеры использовались не лучшим образом, это не просто/профиль/Джон-Смит, но также и профиль/JonFK. И на самом деле имеет смысл использовать чувствительные к регистру URLS, потому что/profile/JonFK имеет значение, а/profile/Jonfk - не так много – Catalin