FriendlyIDを自分のレールアプリにインストールしました。私はこの問題https://github.com/norman/friendly_id/issues/700の指示に従い、第1のオプションに従ってこのようなリンクを変更しました。FriendlyID - 管理者ネームスペースのデフォルトIDを使用
# before: admin_post_path(@post)
link_to admin_post_path(@post.id)
これまでのところは良い、しかし私は、私は次のエラーを取得_formを提出しようとしたとき、私は私も削除していたので、これが発生したことを発見したいくつかのデバッグ後
Couldn't find Post with 'id'=hello-world
.friendlyメソッドは、Post.findから:
def set_post
# before: Post.friendly.find(params[:id])
@post = Post.find(params[:id])
end
だから私はすべてを取り戻すときに働いていた。あなたは
Post Load (0.3ms) SELECT `posts`.* FROM `posts` WHERE `posts`.`slug` = '1' LIMIT 1
Post Load (0.2ms) SELECT `posts`.* FROM `posts` WHERE `posts`.`id` = 1 LIMIT 1
を知っているようしかし、これは、ナメクジを取得するために使用される1つの余分なクエリを生成し、今ここに私の質問です:set_post
に@post = Post.find(params[:id])
を維持し、この余分なクエリを削除する方法はありますか?親ネームスペースと親指を使ってリンクが機能するようにフロントエンドでこれを適用することを覚えておいてください。
ルックアップ自体ではなく、生成されたリンクに問題はありませんか?つまり、実際のIDの代わりにリンクで使われているのですか? opが取得するエラーは '' id '= hello-world'でポストを見つけることができませんでした。 – Iceman
@Iceman:hmm、私が理解する限りではありません。さもなければ、ログに 'slug =' 1 'が来るのを見るのではなく、代わりにスラグの値を返します。 – gwcodes
いいえ、あなたは正しいと思われます。 friendly_idにも同様の問題がありました。 – Iceman