Я закончил учебник Hartl и пытаюсь создать URL-адрес тщеславия для моего твитер-клона так же, как твиттер, например. www.twitter.com/realDonaldTrumpRails route/name вместо/users /: id
Мне удалось заставить мои URL-адреса выглядеть как/users /: slug. Wondering - как я его получу, так это просто /: slug?
Вот что я сделал до сих пор:
1.In моя модель пользователя, нет столбца для «имя пользователя», так что я использовал «имя» вместо этого.
2. Создана новая миграция для добавления столбца slug в пользовательскую модель DB.
3.Plugged в рельсах консоли, чтобы добавить слизней для всех пользователей, набрав:
User.all.each do |user|
user.slug = user.name.downcase.parameterize
user.save
end
4.Configured UsersController показать действие на:
def show
@user = User.find_by_slug(params[:id])
@microposts = @user.microposts.paginate(page: params[:page])
redirect_to root_url and return unless @user.activated?
end
Теперь, когда я настроил это так показывает/users /: slug, как мне его изменить, так что это просто /: slug?
изменить roue на 'get '/: id', to: 'users # show'' – Sravan
, который, похоже, работает, например, я могу посетить страницу профиля/chloe-schamberger. Но теперь я не могу посетить ни одну из моих страниц. Я получаю сообщение об ошибке: неопределенный метод 'microposts' для ноль: NilClass Защиту показать @user = User.find_by_slug (Params [: ID]) @microposts = @ user.microposts.paginate (страницы: Params [: страница]) redirect_to root_url и вернуть, если только @ user.activated? end – doctopus
Кажется, что всякий раз, когда я посещаю страницы коллекции, например/users,/help,/about, маршруты думают, что: id = пользователи. Как это исправить? – doctopus