首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >friendly-id:未定义的电影方法插件

friendly-id:未定义的电影方法插件
EN

Stack Overflow用户
提问于 2014-08-31 21:20:06
回答 3查看 3.7K关注 0票数 4

我下载了friendly_id gem,以使我的URL更加用户友好。为了尊重他们的指示,我在这里问这个问题,而不是在GitHub上。

以下是我的Show方法

代码语言:javascript
复制
def show
  @movie = Movie.friendly.find(params[:id])
end

这与他们的文档相符

代码语言:javascript
复制
Finders are no longer overridden by default. If you want to do friendly finds, you must
do Model.friendly.find rather than Model.find. You can however restore FriendlyId 
4-style finders by using the :finders addon:

在我的Model.rb文件中,我有以下内容

代码语言:javascript
复制
extend FriendlyId
friendly_id :title, use: :slugged

从他们的文档

代码语言:javascript
复制
friendly_id :foo, use: :slugged # you must do MyClass.friendly.find('bar')

也来自他们的文档

代码语言:javascript
复制
def set_restaurant
  @restaurant = Restaurant.friendly.find(params[:id])
end

作为参考,这里是他们的指南。

当然,我还没有生成迁移,因为我已经创建了表。

我不确定我的下一步应该是什么?

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2014-12-22 11:19:21

您需要运行迁移以将slug列添加到表中:

代码语言:javascript
复制
class AddSlugToMovies < ActiveRecord::Migration
  def change
    add_column :movies, :slug, :string, unique: true
  end
end

运行rake db:migrate,然后在rails控制台中运行Move.find_each(&:save)以填充slug列。

票数 16
EN

Stack Overflow用户

发布于 2017-03-10 22:16:50

Marina说你必须添加slug字段是正确的。

但是很多人对此感到困惑,因为FriendlyID会生成包含sluggable_id和sluggable_type字段的friendly_id_slugs表。

代码语言:javascript
复制
create_table "friendly_id_slugs", force: :cascade do |t|
t.string   "slug",                      null: false
t.integer  "sluggable_id",              null: false
t.string   "sluggable_type", limit: 50
t.string   "scope"
t.datetime "created_at"
t.index ["slug", "sluggable_type", "scope"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope", unique: true
t.index ["slug", "sluggable_type"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type"
t.index ["sluggable_id"], name: "index_friendly_id_slugs_on_sluggable_id"
t.index ["sluggable_type"], name: "index_friendly_id_slugs_on_sluggable_type"
end

基本上,它为历史模块生成friendly_id_slugs表。看看他们关于History__Avoiding_404_s_When_Slugs_Change的文档:http://norman.github.io/friendly_id/file.Guide.html#History__Avoiding_404_s_When_Slugs_Change

票数 2
EN

Stack Overflow用户

发布于 2016-02-09 04:39:10

如果您要开始使用新表,您还可以这样做:

代码语言:javascript
复制
class CreateMovies < ActiveRecord::Migration
  def change
    create_table :movies do |t|
      ...
      t.string :slug
      t.index :slug, unique: true, using: :btree
    end
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25592370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档