Я использую гем friendly_id для обработки URL-слагов, и при применении исправления, чтобы избежать 404-х, когда слаг отличается от документации , мой код не работает должным образом.
проблема в том, что он просто перенаправляет в представление представления поста, когда я нажимаю на кнопку редактирования, и не позволяет мне создать новое сообщение, потому что он "не может найти сообщение с идентификатором ...", потому что использует метод find_post
.
У меня есть таблица friendly_id_slugs
для хранения истории.
В моей почтовой модели:
class Post < ApplicationRecord
extend FriendlyId
friendly_id :title, use: :slugged
...
def should_generate_new_friendly_id?
slug.nil? || title_changed?
end
end
Почтовый контроллер:
class PostsController < ApplicationController
before_action :find_post
...
def find_post
@post = Post.friendly.find(params[:id])
# If an old id or a numeric id was used to find the record, then
# the request path will not match the post_path, and we should do
# a 301 redirect that uses the current friendly id.
if request.path != post_path(@post)
return redirect_to @post, :status => :moved_permanently
end
end
end
Я пытался использовать before_filter
, но спрашивает меня, имею ли я в виду before_action
, и я пытался использовать метод find_post
как в общедоступной, так и в private
секции моего контроллера.