Entediado com yoursite.com/articles/1</code> default URLs in Rails? Want something like yoursite.com/articles/obama-re-elected</code>? Here's a workaround.
Nota : Unicode aplicado. Isso significa um título deobama-đắc-cử</code> will have the result as /articles/obama-dac-cu</code>.
1. Coloque isso em seu Gemfile</code>:
gem "stringex", "~> 1.4.0"
2. Coloque isso em seu Model.rb</code>:
acts_as_url :name, url_attribute: :slug
def to_param
slug
end
Isso converterá seu atributo: name em seu modelo em um URL amigável e o colocará em: slug
Bem no início do seu Model.rb</code>, put this if you're using Unicode titles:
# encoding: UTF-8
3. Em seguida, precisamos migrar: slug em nosso modelo atual
rails g migration AddSlugToModel slug:string
rake db:migrate
4. Em seu controlador, substitua: Model.find(params[:id])</code> with Model.findbyslug(params[:id])</code>
Compatível com Active Admin
to_param substituirá a configuração do Admin ativo, então você pode precisar adicionar este ajuste ao seu app/admin/YourModel.rb</code>:
around_filter do |controller, action|
MyModel.class_eval do
alias :__active_admin_to_param :to_param
def to_param() id.to_s end
end
begin
action.call
ensure
MyModel.class_eval do
alias :to_param :__active_admin_to_param
end
end
end
Lembre-se de substituir MyModel pelo nome do seu modelo.
- Tu qio.me/rebyn
PS: Eu sei, Markdown em Coderwall é uma merda.