[Ruby on Rails] Ändern Sie die URL-ID in den Spaltennamen

Einführung

Wenn Sie in Rails die Ressourcenmethode in route.rb verwenden, wird normalerweise standardmäßig der Parameter: id verwendet. In einigen Fällen möchten Sie möglicherweise die Anzeige ändern. Dieses Mal werde ich beschreiben, wie die ID in die Namensspalte geändert wird.

Ziel

スクリーンショット 2020-10-25 16.32.12.pngスクリーンショット 2020-10-25 16.31.38.png

Entwicklungsumgebung

ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina

Annahme

[Ruby on Rails] So melden Sie sich mit gem devise nur mit Ihrem Namen und Passwort an Wir werden die URL basierend darauf ändern.

Vorbereitung

Im vorausgesetzten Artikel lautet die URL also mypage Dieses Mal werde ich es wagen, eine URL mit einer ID zu verwenden.

config/routes.rb


get 'mypage', to: 'homes#mypage'
↓
get 'mypage/:id', to: 'homes#mypage', as: 'mypage'

app/controllers/users/registrations_controller.rb


def after_sign_up_path_for(resource)
  mypage_path
end
↓
def after_sign_up_path_for(resource)
  mypage_path(@user)
end

app/controllers/users/sessions_controller.rb


def after_sign_in_path_for(resource)
  mypage_path
end
↓
def after_sign_in_path_for(resource)
  mypage_path(@user)
end

app/controllers/homes_controller.rb


def mypage
end
↓
def mypage
  @user = User.find(params[:id])
end

Jetzt haben Sie eine URL mit einer ID.

Ändern Sie die ID in die Namensspalte

Beseitigen Sie gleichnamige URLs

Um die URL zu einer Spalte zu machen, muss derselbe Name entfernt werden. Wenden Sie dann die Validierung an.

Modell Bestätigung

app/models/user.rb


validates :name, uniqueness: true

DB-Validierung

Terminal


$ rails g migration add_index_users_name

db/migrate/xxxxxxxxxxxxx_add_index_users_name.rb


class AddIndexUsersName < ActiveRecord::Migration
  def change
    add_index :users, :name, unique: true
  end
end

Terminal


$ rails db:migrate

Ändern Sie tatsächlich die ID in den Namen

Es ist wichtig, find auf find_by zu setzen.

config/routes.rb


get 'mypage/:id', to: 'homes#mypage', as: 'mypage'
↓
get 'mypage/:name', to: 'homes#mypage', as: 'mypage'

app/controllers/homes_controller.rb


def mypage
  @user = User.find(params[:id])
end
↓
def mypage
  @user = User.find_by(name: params[:id])
end

Geben Sie außerdem das Linkziel nach Namen an Verwenden Sie die to_param-Methode.

app/models/user.rb


validates :name, uniqueness: true

#↓ Hinzufügen
def to_param
  name
end

Dies sollte das gleiche sein wie Ihr Ziel.

Bei Verwendung von Ressourcen

Es ist in Ordnung, wenn Sie den Ressourcen Folgendes hinzufügen.

resources :users, param: :name





 Jetzt sollte das Linkziel auch nach Namen angezeigt werden.


# Zusammenfassung
 Indem Sie es zu einer Zeichenfolge anstelle einer solchen Zahl machen,
 Es ist leicht zu verstehen, auf welcher Seite Sie sich befinden, was es bequemer macht.
 Wenn Sie in einem Dienst wie SNS eine numerische ID verwenden,
 Dies ist keine empfohlene Methode, da Sie wissen, wie viele Registranten Sie gerade haben.
 In diesem Fall versuchen Sie bitte diese Methode.

 Auf Twitter werden auch Technologien und Ideen hochgeladen, die nicht auf Qiita hochgeladen wurden
 Ich wäre Ihnen dankbar, wenn Sie mir folgen könnten.
 Klicken Sie hier für Details https://twitter.com/japwork


Recommended Posts

[Ruby on Rails] Ändern Sie die URL-ID in den Spaltennamen
[Ruby on Rails] So ändern Sie den Spaltennamen
[Rails] So ändern Sie den Spaltennamen der Tabelle
[Ruby on Rails] Von der MySQL-Konstruktion zum Datenbankwechsel
Verwendung von Ruby on Rails
Bereitstellung auf Ruby on Rails Elastic Beanstalk (Änderung der IAM-Berechtigung)
[Ruby on Rails] Spaltenbeschränkungen beim Speichern in der Datenbank (4 Vertreter)
So ändern Sie den App-Namen in Rails
Bereitstellen für Heroku [Ruby on Rails] Anfänger
Vorbereiten der Einführung von jQuery in Ruby on Rails
[Ruby on Rails] Verwendung von redirect_to
[Ruby on Rails] Schaltfläche, um nach oben zurückzukehren
Was tun, wenn blockierter Host: "Hostname" in Ruby on Rails angezeigt wird
Bereitstellung auf Ruby on Rails Elastic Beanstalk (EB-Bereitstellung)
Ruby on Rails Elementary
Ruby on Rails Grundlagen
Ruby On Rails Association
[Ruby on Rails] Ändern Sie das Aktualisierungsdatum und das Erstellungsdatum in Ihre bevorzugte Notation
[Einführung] Erstellen Sie eine Ruby on Rails-Anwendung
Zusammenfassung der Methoden zum Aktualisieren mehrerer Spalten [Ruby on Rails]
[Ruby on Rails] Wie schreibe ich eine Enumeration auf Japanisch?
[Von Zeit zu Zeit aktualisiert] Ruby on Rails Praktische Methode
Bereitstellen auf Ruby on Rails Elastische Bohnenstange (Umgebungskonstruktion)
[Ruby On Rails] So setzen Sie die Datenbank in Heroku zurück
(Ruby on Rails6) So erstellen Sie ein Modell und eine Tabelle
Ruby on Rails Lernrekord -2020.10.03
Portfolioerstellung Ruby on Rails
Ruby on Rails Lernrekord -2020.10.04
[Ruby on Rails] Debuck (bindend.pry)
Ruby on Rails Lernrekord -2020.10.05
Ruby on Rails Lernrekord -2020.10.09
Ruby on Rails lernen Rekord-2020.10.07 ②
[Schienen] Spalte zum Entwickeln hinzufügen
Ruby on Rails lernen Rekord-2020.10.07 ①
Brechen Sie die Ruby on Rails-Migration ab
Ruby on Rails Lernrekord -2020.10.06
Zusammenfassung der Ruby on Rails-Validierung
Ruby on Rails Grundlegendes Memorandum
So ändern Sie dynamisch den von MyBatis erfassten Spaltennamen
[Ruby on Rails] Wenn die ID-Erfassung des Parameters nicht gut lief
[Ruby on Rails] Fügen Sie eine Spalte mit externen Schlüsselbeschränkungen hinzu
<Punktinstallation> Einführung in Ruby on Rails5 Vergleich des Quellcodes
[Ruby on Rails] Eliminierung von Fat Controller-First, Logik zum Modell-
(Ruby on Rails6) Anzeige der Datenbank, die die ID der Datenbank erhalten hat
So zeigen Sie Diagramme in Ruby on Rails an (LazyHighChart)
Wenden Sie CSS auf eine bestimmte Ansicht in Ruby on Rails an