表題の通り、表示されてあるURLのidをランダムな数字と文字にしたいです。
初学者なので詳しく教えていただけるとありがたいです。
gem 'public_uid'やto_paramメソッドを使うとありましたがURLの表示が変わりませんのでご教授ください。
また、DBにはpublic_uidカラムの追加、データの保存まではできています。
user.rb class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable generate_public_uid generator: PublicUid::Generators::HexStringSecureRandom.new(20) def to_param public_uid end end
「URLの表示が変わりません」とありますが、表示側のコードはどのように書いていますか?
表示側のコードがわかりませんが、ターミナルでrails routesを行うと
```
user GET /users/:public_uid(.:format) users#show
```
```
routes.rb
resources :users, param: :public_uid, only: :show
```
```
users_controller.rb
class UsersController < ApplicationController
before_action :set_user
def show
end
private
def set_user
@user = User.find_by(public_uid: params[:id])
end
end
```
となっています。
DBに入っているpublic_uidをURLに入れる(http://localhost:3000/users/20桁のpublic_uid)と問題なくページは表示されました。
よろしくお願いいたします。
URLが「IDで表示される」のはどこへどのように表示されているのですか?
ご回答ありがとうございます!
最初意味が分からず、調べてみるとapplication_controller.rbにIDで表示されるように自分で記述していました。。
変更すると意図した通りの表示になりました!
ご回答ありがとうございます!
回答1件
あなたの回答
tips
プレビュー