Suche…


Einführung

FriendlyId ist der "Swiss Army Bulldozer" von Plugins für Plug-Ins und Permalink für Active Record. Sie können hübsche URLs erstellen und mit benutzerfreundlichen Zeichenfolgen arbeiten, als wären sie numerische IDs. Mit FriendlyId können Sie ganz einfach festlegen, dass in Ihrer Anwendung URLs verwendet werden:

http://example.com/states/washington

Rails Schnellstart

rails new my_app
cd my_app

Gemfile

gem 'friendly_id', '~> 5.1.0' # Note: You MUST use 5.0.0 or greater for Rails 4.0+
rails generate friendly_id
rails generate scaffold user name:string slug:string:uniq
rake db:migrate

Bearbeiten Sie App / Modelle / Benutzer.rb

class User < ApplicationRecord
  extend FriendlyId
  friendly_id :name, use: :slugged
end

User.create! name: "Joe Schmoe"

# Change User.find to User.friendly.find in your controller
User.friendly.find(params[:id])

rails server
GET http://localhost:3000/users/joe-schmoe

# If you're adding FriendlyId to an existing app and need
# to generate slugs for existing users, do this from the
# console, runner, or add a Rake task:
User.find_each(&:save)

Finders are no longer overridden by default. If you want to do friendly finds, you must do Model.friendly.find rather than Model.find. You can however restore FriendlyId 4-style finders by using the :finders addon


friendly_id :foo, use: :slugged # you must do MyClass.friendly.find('bar')
#or...
friendly_id :foo, use: [:slugged, :finders] # you can now do MyClass.find('bar')

Eine neue "Kandidaten" -Funktionalität, die es einfach macht, eine Liste alternativer Slugs zu erstellen, die zur eindeutigen Unterscheidung von Datensätzen verwendet werden können, anstatt eine Sequenz anzuhängen. Zum Beispiel:

class Restaurant < ActiveRecord::Base
  extend FriendlyId
  friendly_id :slug_candidates, use: :slugged

  # Try building a slug based on the following fields in
  # increasing order of specificity.
  def slug_candidates
    [
      :name,
      [:name, :city],
      [:name, :street, :city],
      [:name, :street_number, :street, :city]
    ]
  end
end

Slug-Grenzlänge mit friendly_id gem einstellen?

def normalize_friendly_id(string)
   super[0..40]
end


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow