настройте URL направляющих с именем пользователя

Я хочу скопировать страницу профиля в Твиттере и иметь URL с именем пользователя "http://www.my-app.com/username" и в то время как я могу вручную ввести это в строку поиска и перейти к странице профиля, я не могу связаться с пользовательским URL.

Я думаю, что проблема находится в маршрутах - вот код в моем routes.rb

map.connect '/:username', :controller => 'users', :action => 'show'

Кроме того, я имею Question и Answer модели и я хотим связаться с ними со специализированным URL как так:

http://www.my-app.com/username/question/answer/2210

12
задан not a patch 13 February 2017 в 14:41
поделиться

3 ответа

С вашим маршрутом все в порядке. Просто не забудьте определить его в конце, после определения всех остальных маршрутов. Я бы также рекомендовал использовать маршруты RESTful, и только если вы хотите, чтобы URL-адреса выглядели лучше, используйте именованные маршруты. Не используйте map.connect . Вот полезные сведения о маршрутах Rails .

Вот как это может выглядеть:

map.resources :questions, :path_prefix => '/:username' do |question|
  question.resources :answers
end

map.resources :users

map.user '/:username', :controller => 'users', :action => 'show'

Просто черновик, который можно продлить.

13
ответ дан 2 December 2019 в 19:31
поделиться

Для создания урлов вам нужно определить метод to_param для вашей модели пользователя (читайте здесь).

class User < ActiveRecord::Base
  def to_param 
    username
  end
end
4
ответ дан 2 December 2019 в 19:31
поделиться

Я использовал вот так

Часть просмотра

портфолио.user.name,: id => портфолио)%>

и в rout.rb

map.show_portfolio "portfolios /: username",: action => 'show_portfolio',: controller => ' портфели '

0
ответ дан 2 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: