我在我的Rails應用上安裝了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
一些調試後,我發現,這是發生因爲我還刪除了從Post.find .friendly方法,所以:
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
現在,這裏是我的問題:有沒有辦法保持對set_post
的@post = Post.find(params[:id])
,並刪除此額外的查詢?請記住,我希望這隻適用於管理員命名空間,所以在前端鏈接應該使用友好的ID和slu 012
生成的鏈接不是問題,而不是查找本身?我的意思是,slug用於鏈接而不是實際的ID?我們得到的錯誤是'找不到'id'= hello-world'的帖子。 – Iceman
@Iceman:嗯,並不是我所理解的。否則,你不會在日誌中看到'slug ='1'',但是代替了'slug'的值... – gwcodes
不,你看起來很正確,只是一個念頭。我有一個與friendly_id類似的問題。 – Iceman