настроить рельсы URL с именем пользователя - PullRequest
12 голосов
/ 16 февраля 2010

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

Я думаю, что проблема в маршрутах - вот код в моих маршрутах. Rb

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

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

http://www.my -app.com / имя пользователя / вопрос / ответ / 2210

Ответы [ 4 ]

13 голосов
/ 17 февраля 2010

Нет ничего плохого в вашем маршруте. Просто не забудьте определить его в конце, после определения всех других маршрутов. Я также рекомендовал бы использовать маршруты 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'

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

4 голосов
/ 17 февраля 2010

Для создания URL-адресов вам необходимо определить метод to_param для вашей пользовательской модели ( читайте здесь ).

class User < ActiveRecord::Base
  def to_param 
    username
  end
end
1 голос
/ 17 октября 2013

Я знаю, что эти вопросы старые, но кому-то это поможет.

Вы можете попробовать ниже. Я использовал его в проекте rails 4, и все, кажется, работает отлично. Причина для as: :admin в том, что у меня также было resources posts вне этой области. Это добавит admin к вызовам помощника, например admin_posts_path

scope ":username", module: 'admin', as: :admin do
  get '', to: 'profiles#show'
  resources :posts
end
0 голосов
/ 10 марта 2010

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

In View part

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

и в rout.rb

map.show_portfolio "портфолио /: имя пользователя",: действие => 'show_portfolio',: controller => 'портфолио'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...