【问题标题】:How to include id in slug using friendly_id如何使用friendly_id在slug中包含id
【发布时间】:2015-06-01 19:39:59
【问题描述】:

我正在使用friendly_id gem 在我的应用程序中有漂亮的网址。我想要一个类似的网址:

localhost:3000/posts/1/my-first-post

我想使用friendly_id gem 来完成它,因为我想使用History 模块来避免404 错误。我已经尝试过但不能在slug 中包含id。我使用的代码如下:

class Post < ActiveRecord::Base

    extend FriendlyId
    friendly_id :pretty_url, use: [:slugged, :history]

    def pretty_url
        "#{id}/#{title}"
    end
end

但它没有在 slug 中包含 id。而是使用 slug,就好像只使用了标题一样。

【问题讨论】:

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


    【解决方案1】:

    我想我记得在某处读到 FriendlyId 在您的 slug 函数中遇到了斜线问题。试试"#{id}-#{title}" 看看是不是这样。

    【讨论】:

    • 是的,我也试过了,但 id 仍然没有显示。
    • 您看到的是“-title”还是“title”?如果是前者,那么您的 id 映射可能存在缺陷。如果是后者,那么.... idk 说实话
    【解决方案2】:

    Post 的id 是在条目保存后设置的。 pretty_url 不起作用,因为 id 尚不存在。

    您可以通过以下方式在不使用friendly_id gem 的情况下获得此行为:

    def to_param
      "#{id} #{title}".parameterize
    end
    

    【讨论】:

      猜你喜欢
      • 2021-04-25
      • 2014-03-19
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 2015-12-27
      • 2016-05-15
      相关资源
      最近更新 更多