2015-06-15 6 views
0

Чтобы показать профиль пользователя, я использовал их идентификатор. В контроллере:Путь пользователя с пользователем

@user = User.find(params[:id]) 

В маршрутах:

get ':id' => 'users#show' 

Но теперь я стараюсь новый путь с именем:

get ':username' => 'users#show' #route 

@user = User.find_by(username: params[:username]) #controller 

И когда я иду в профиль пользователя с /username я вижу ошибку: undefined method posts. В контроллере я получаю сообщения пользователя. Но теперь это не работает. Пожалуйста, скажи мне почему? И у меня есть еще один вопрос. Когда я перехожу на /users или /posts или что-то еще, мое приложение думает, что я иду на страницу Uset. Как это исправить? И что делать, если пользователь регистрируется, например, по имени пользователя: «пользователи»?

+0

показать нам the' PostsController' и ваш файл маршрута – Cyzanfar

+0

И, возможно, рейк-маршруты и метод вызова, который выдает ошибку. – Joseph

+0

Где вы используете метод 'posts', в котором он не работает? – locoboy

ответ

1

Artyom вы можете использовать friendly-id gem, если хотите, чтобы этот процесс был проще для вас. У Райана Бейтса есть и Railscast.

Таким образом, вы можете использовать строки в качестве идентификаторов (т.е. ваш username) в URL:

http://localhost:3000/articles/hello-world 

Позвольте мне знать, если у вас есть какие-либо вопросы,

-Dave

+0

Я добавляю этот драгоценный камень. Затем я добавляю этот код в модель пользователя: 'extend FriendlyId \t friendly_id: имя пользователя'. Но он все еще не работает. Постскриптум Я использую драгоценный камень. –

+1

Вы следовали инструкциям ** Rails Quickstart ** для установки FriendlyId на их странице [git] (https://github.com/norman/friendly_id)? Перед тем, как это сработает, вам нужно предпринять несколько шагов. Какие ошибки вы получаете? Вот еще один ценный видеоурок [GoRails # 9] (https://gorails.com/episodes/pretty-urls-with-friendly-id). – DerProgrammer

+1

Теперь он работает, спасибо. Проблема заключалась в чувствительности к регистру. Я неправильно ввел имя пользователя в адресную строку. Итак, как удалить чувствительность к регистру? –

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