Rails + Friendly ID:让一些路径使用数字 ID
Rails + Friendly ID: Have some paths use the numerical ID
我有一个 Rails 应用程序使用 friendly_id
Gem。
使用友好 ID 效果很好。
但是,后台中有一些路径我不想在 URI 中使用 Friendly ID slug,因为不可能使用与前端相同的范围。
例如我有一篇文章可以有多个版本。在前面的每个 blog 上,显示另一个文章版本。因此,我可以使用@blog.articles.friendly.find(params[:id])
。然而,在后台,我有一些页面,人们可以在其中编辑这样一个版本,它 而不是 嵌套在博客下(因为版本可以使用表单更改博客)。因此,与早期版本具有相同 slug 的文章版本将无法访问。
我如何指示 friendly_id
and/or Rails URL 帮助器不对这些路径使用 slug,而只使用旧的数字 ID?
在 Article
模型中,将 finders
选项添加到 friendly_id
属性
class Article < ActiveRecord::Base
...
friendly_id :name_of_article, :use => [:slugged, :finders]
...
end
在这种情况下,无论 params[:id]
是数字 ID 还是 slug,您应该仍然可以通过 Article.find(params[:id])
获取文章。
不确定我是否正确理解了你的问题。希望对您有所帮助!
我有一个 Rails 应用程序使用 friendly_id
Gem。
使用友好 ID 效果很好。
但是,后台中有一些路径我不想在 URI 中使用 Friendly ID slug,因为不可能使用与前端相同的范围。
例如我有一篇文章可以有多个版本。在前面的每个 blog 上,显示另一个文章版本。因此,我可以使用@blog.articles.friendly.find(params[:id])
。然而,在后台,我有一些页面,人们可以在其中编辑这样一个版本,它 而不是 嵌套在博客下(因为版本可以使用表单更改博客)。因此,与早期版本具有相同 slug 的文章版本将无法访问。
我如何指示 friendly_id
and/or Rails URL 帮助器不对这些路径使用 slug,而只使用旧的数字 ID?
在 Article
模型中,将 finders
选项添加到 friendly_id
属性
class Article < ActiveRecord::Base
...
friendly_id :name_of_article, :use => [:slugged, :finders]
...
end
在这种情况下,无论 params[:id]
是数字 ID 还是 slug,您应该仍然可以通过 Article.find(params[:id])
获取文章。
不确定我是否正确理解了你的问题。希望对您有所帮助!