前提:【爆速】Rails6でURLを:idでは無くユーザー名に変更する方法
今回は、上記の方法でURLをオリジナルにしている前提のお話です。
例えば、 http://localhost:3000/articles
と http://localhost:3000/articles/url_test
というURLで一覧ページと詳細ページ(URLを/:idではなく、/:オリジナルにした場合)があるとします。
その際に、GemのActive Adminを使用していると、一覧ページは表示されるのですが、「閲覧」「編集」「削除」の3つが使えなくなります。
理由としては、Active Adminの方のURLも http://localhost:3000/admin/articles/url_test
というようにオリジナルのURLが反映されてしまうからです。
Active Adminでは、/:idのページでしか使えませんので、ここを変更する必要がありますね。
article.rb を編集
class Article < ApplicationRecord
validates :original_url,
uniqueness: true
# def to_param
# return self.original_url
# end
end
article.rb
で to_params
をコメントアウトか削除します。
articles_controller.rb に移動
private
def to_param
unless request.path.include?("admin")
return self.original_url
end
end
コントローラに上記の記述を追加します。
そうすることで、アプリのviewでは、http://localhost:3000/articles/url_test
と表示され、Active Admin側では、http://localhost:3000/admin/articles/1
と表示されるようになり、編集や削除などもできるようになります。