FriendlyID включает в себя модуль Зарезервировано, который предотвращает список предоставленных слов от использования в качестве дружественных слизней. Вы можете добавить свои статические маршруты в зарезервированный массив слов, который не позволит кому-то переписать ваши маршруты.
От FriendlyId RDocs
FriendlyId.defaults do |config|
config.use :reserved
# Reserve words for English and Spanish URLs
config.reserved_words = %w(new edit nueva nuevo editar)
end
Если вы все еще хотите, чтобы за титул, который зарезервирован вы можете создать новый метод, который FriendlyId бы использовать для слизняка. Эта часть из RDocs объясняет, что
колонки или метод?
FriendlyId всегда использует метод в качестве основы текста пули - не столбца. Это первый взгляд, это может показаться запутанным, но помните, что Active Record предоставляет методы для каждого столбца в связанной таблице модели, и это то, что использует FriendlyId.
Вот пример класса, который использует специальный метод для создания слизняка:
class Person < ActiveRecord::Base
friendly_id :name_and_location
def name_and_location
"#{name} from #{location}"
end
end
bob = Person.create! :name => "Bob Smith", :location => "New York City"
bob.friendly_id #=> "bob-smith-from-new-york-city"
Вы можете создать метод, как :title_with_id
или :title_with_rand
. это зависит от вас и от того, как вы хотите, чтобы пули выглядели.
Вы также хотели бы убедиться, что ваши routes.rb
имеют ваши статические маршруты, указанные до маршрутов с дружественным идентификатором. Первый маршрут диспетчера совпадает с тем, где запрос будет обработан.
Я добавил ответ, но было бы полезно увидеть relavent строки вашего файла 'routes.rb'. –