【问题标题】:Rails + Friendly ID: Have some paths use the numerical IDRails + Friendly ID:让一些路径使用数字 ID
【发布时间】:2016-02-21 11:49:40
【问题描述】:

我有一个使用 friendly_id Gem 的 Rails 应用程序。

使用友好 ID 效果很好。

但是,在后台的某些路径中,我不想在 URI 中使用友好 ID slug,因为无法使用与前端相同的范围。

例如我有一篇可以有多个版本的文章。在前面的每个 blog 上,都会显示另一个文章版本。因此,我可以使用@blog.articles.friendly.find(params[:id])。但是,在后台,我有页面可供人们编辑这样的版本,它嵌套在博客下(因为版本可以使用表单更改博客)。因此,与早期版本具有相同 slug 的文章版本将变得无法访问。

如何指示 friendly_id 和/或 Rails URL 助手不要对这些路径使用 slug,而只使用良好的旧数字 ID?

【问题讨论】:

    标签: ruby-on-rails url-routing friendly-id


    【解决方案1】:

    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]) 获取文章。

    不确定我是否正确理解了您的问题。希望对您有所帮助!

    【讨论】:

    • 问题是,在某些时候可能有两篇文章具有相同的 slug。这是预期的行为,因为它们的范围是Blog。例如friendly_id :name_of_article, use: [:slugged, :history, :scoped], scope: :blog。但是,我在后端的文章不在博客范围内,所以我想继续在那里使用数字 ID。
    猜你喜欢
    • 2023-04-03
    • 2016-03-26
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多