2016-06-07 4 views
1

Я использую friendly_id в своем приложении rails. У меня есть следующее в gemfile.Как получить friendly_id gem работать с Rails 5.0.0.rc1?

gem 'friendly_id', '~> 5.1' 

Я получаю ошибку 404 всякий раз, когда я посещаю профиль пользователя.

[email protected]:~/workspace/iya (master) $ rails server -b $IP -p $PORT 
=> Booting WEBrick 
=> Rails 5.0.0.rc1 application starting in development on http://0.0.0.0:8080 
=> Run `rails server -h` for more startup options 
[2016-06-07 05:54:21] INFO WEBrick 1.3.1 
[2016-06-07 05:54:21] INFO ruby 2.3.1 (2016-04-26) [x86_64-linux] 
[2016-06-07 05:54:21] INFO WEBrick::HTTPServer#start: pid=74846 port=8080 
Started GET "https://stackoverflow.com/users/testtest" for 98.5.56.144 at 2016-06-07 05:54:25 +0000 
Cannot render console from 98.5.56.144! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 
    ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations" 
Processing by UsersController#show as HTML 
    Parameters: {"id"=>"testtest"} 
    User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 0], ["LIMIT", 1]] 
    Rendering public/404.html within layouts/application 
    Rendered public/404.html within layouts/application (8.5ms) 
    Rendered layouts/_shim.html.erb (0.8ms) 
    Rendered layouts/_header.html.erb (2.3ms) 
    Rendered layouts/_footer.html.erb (2.2ms) 
Completed 404 Not Found in 924ms (Views: 848.5ms | ActiveRecord: 2.1ms) 

контроллер пользователя, показать метод

def show 
    @user = User.find(params[:id]) 
    @microposts = @user.microposts.paginate(page: params[:page]) 
    respond_to do |format| 
     format.html 
     format.js  
    end  
    end 

User.rb

extend FriendlyId 
    friendly_id :name, use: [:slugged, :finders] 

Я полагал, что friendly_id не работает.
Любая идея, как это решить? Спасибо

+0

Можете ли вы опубликовать, какие параметры переданы вашему методу. И ошибка, которую вы получаете в консоли сервера rails? – Kumar

+0

Хорошо, можете ли вы разместить содержимое своих пользователей # show method? – Kumar

ответ

1

Я считаю, что вам нужно сделать, это пользователь Model.friendly.find вместо find.

def show 
    @user = User.friendly.find(params[:id]) 
    @microposts = @user.microposts.paginate(page: params[:page]) 
    respond_to do |format| 
    format.html 
    format.js  
    end  
end 

Надеюсь, вы расширили свою модель с помощью FriendlyId. Дайте мне знать, если это сработает.

+0

Эй, это работает. Спасибо. Но у меня есть это «friendly_id: name, use: [: slugged,: finders]». Должно ли это быть «friendly_id: foo, use:: slugged»? – LovingRails

+0

Извините за поздний ответ. Нет, это просто пример. С тобой все в порядке. – Kumar

+0

Спасибо. Но если у меня есть «friendly_id: foo, используйте: [: slugged,: finders]», этот «User.find (params [: id]) должен работать правильно? Я должен использовать «User.friendly.find (params [: id])», только если у меня есть это «friendly_id: foo, use:: slugged» правильно? Согласно https://github.com/norman/friendly_id – LovingRails

2

Если вы хотите использовать ...

extend FriendlyId 
friendly_id :name, use: [:slugged, :finders] 

... Вам нужно установить мастер-ветвь (friendly_id 5.2.0.beta.1)

gem 'friendly_id', github: 'norman/friendly_id' 

Если вы так , вам не нужно менять контроллеры (Model.friendly.find)

2

обновление до версии 5.2.1.

gem 'friendly_id', '~> 5.2.1' 
+0

это не помогает – bmalets

 Смежные вопросы

  • Нет связанных вопросов^_^