在没有在模型中定义的情况下在 rails 中创建 slug

Posted

技术标签:

【中文标题】在没有在模型中定义的情况下在 rails 中创建 slug【英文标题】:Creating a slug in rails without defining it in the model 【发布时间】:2014-02-15 04:47:05 【问题描述】:

我想通过覆盖 to_params 方法在 Rails 中创建一个友好的 URL:

 def to_param
     "#id-#brand-#name"
 end 

但是如果我从另一个控制器调用对象怎么办。例如,如果我有一个站点控制器和一个产品控制器...我想在站点控制器中创建一个显示产品的操作,而不是使用产品控制器中的显示操作。

我将如何做到这一点?

【问题讨论】:

【参考方案1】:

对于这种情况,您应该使用已经存在的 gem。 friendly_id gem 提供了您正在寻找的功能。查看他们的guide,了解有关设置和使用的更多信息。

举个简单的例子,取自here:

在您的模型中:

class Post < ActiveRecord::Base
  attr_accessible :content, :title

  extend FriendlyId
  friendly_id :title, use: :slugged
end

然后创建迁移:

$ rails g migration add_slug_to_posts slug:string
$ rake db:migrate

并填写:

class AddSlugToPosts < ActiveRecord::Migration
  def change
    add_column :posts, :slug, :string
    add_index :posts, :slug
  end
end

【讨论】:

以上是关于在没有在模型中定义的情况下在 rails 中创建 slug的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 Jquery-ui 且没有 Bootstrap 的情况下在 angularjs 中创建自定义进度条?

iOS - 如何在没有第三方框架的情况下在 Swift 中创建自定义动画横幅

如何在没有后备表的 Rails 中创建只读模型

如何在没有事件/委托回调的情况下在 Unity 中创建 MessageBox?

如何在没有初始化和特定数量元素的情况下在 Kotlin 中创建对象数组?

如何在没有强关系键(外键)的情况下在数据库中创建 LINK?