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.
↓
ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina
[Ruby on Rails] So melden Sie sich mit gem devise nur mit Ihrem Namen und Passwort an Wir werden die URL basierend darauf ändern.
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.
Um die URL zu einer Spalte zu machen, muss derselbe Name entfernt werden. Wenden Sie dann die Validierung an.
app/models/user.rb
validates :name, uniqueness: true
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
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.
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