【问题标题】:Understanding slug_candidates method in Rails model了解 Rails 模型中的 slug_candidates 方法
【发布时间】:2018-09-10 04:45:21
【问题描述】:

我正在尝试在我的 Rails 应用程序中创建漂亮的 URL。我无法理解模型中的 #slug_candidates 方法内部发生了什么。

class News < ApplicationRecord
  friendly_id :slug_candidates, use: [:slugged, :finders, :history]
  def slug_candidates 
    [:title,
      [:title, :id]
    ] 
  end
end

answer中也找到了类似的方法:

def slug_candidates
  [
    :name,
    [:name, 2],
    [:name, 3],
    [:name, 4],
    [:name, 5],
    [:name, 6],
    [:name, 7]
  ]
end

有人可以简要说明该方法的作用吗?

【问题讨论】:

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


    【解决方案1】:

    如果我们有 2 个 news 具有相同的标题,则 slugs 将是相同的。所以我们无法识别它们。例如:

    New.all
    # => [#<New id: 1, tile: "Title">, #<New id: 2, tile: "Title">]
    
    # Without `slug_candidates`
    New.first # => URL: "news/title"
    New.second # => URL: "news/title"
    # => We cannot find the second one.
    

    现在slug_candidates 提供了一个变体列表,FriendlyId 将遍历该列表,直到找到尚未被使用的 slug。

    # With `slug_candidates`
    def slug_candidates 
      [:title, [:title, :id]]
    end
    
    New.first # => URL: "news/title"
    New.second # => URL: "news/title-2"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多