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

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

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

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

我将如何做到这一点?

【问题讨论】:

    标签: ruby-on-rails ruby url slug


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多