2014-08-31 54 views
4

我下載了friendly_id gem以便使我的網址更加用戶友好。爲了遵守他們的指示,我在這裏問這個,而不是在GitHub上。friendly-id:未定義的電影方法slu 012

這裏是我的顯示方法

def show 
    @movie = Movie.friendly.find(params[:id]) 
end 

這符合他們的文檔

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文件,我有以下

extend FriendlyId 
friendly_id :title, use: :slugged 

從他們的文件

friendly_id :foo, use: :slugged # you must do MyClass.friendly.find('bar') 

也從他們的文檔

def set_restaurant 
    @restaurant = Restaurant.friendly.find(params[:id]) 
end 

僅供參考,這裏是他們的指導。

當然,我還沒有生成遷移,因爲我已經創建了表。

我不確定我的下一步應該是什麼?

謝謝你的幫助。

+0

可能會有所幫助:http://railscasts.com/episodes/314-pretty-urls-with-friendlyid – Inkling 2014-08-31 13:34:19

+1

由於文檔說,你需要一個'蛞蝓'列 – 2014-08-31 14:16:55

+0

謝謝你們,我會看看視頻 – Johnson 2014-08-31 15:25:44

回答

11

您需要運行遷移到slug列添加到您的表:

class AddSlugToMovies < ActiveRecord::Migration 
    def change 
    add_column :movies, :slug, :string, unique: true 
    end 
end 

運行rake db:migrate,然後在你的Rails控制檯運行Move.find_each(&:save)填充slug列。

+4

這對我來說真的讓人感到驚訝,這在我所知道的任何地方都不是(據我所知)。 – 2015-07-25 12:36:54

+0

它在那裏:'rails生成scaffold用戶名:string slug:string:uniq' – Abram 2016-02-08 20:32:12

0

如果你開始使用一個新的你也可以這樣做:

class CreateMovies < ActiveRecord::Migration 
    def change 
    create_table :movies do |t| 
     ... 
     t.string :slug 
     t.index :slug, unique: true, using: :btree 
    end 
    end 
end 
1

瑪麗娜是正確的,你必須添加slug場。

但很多人的困惑,因爲FriendlyID生成friendly_id_slugs表,其中包含sluggable_id和sluggable_type字段。

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_Changehttp://norman.github.io/friendly_id/file.Guide.html#History__Avoiding_404_s_When_Slugs_Change