Я хочу скопировать страницу профиля в Твиттере и иметь URL с именем пользователя "http://www.my-app.com/username" и в то время как я могу вручную ввести это в строку поиска и перейти к странице профиля, я не могу связаться с пользовательским URL.
Я думаю, что проблема находится в маршрутах - вот код в моем routes.rb
map.connect '/:username', :controller => 'users', :action => 'show'
Кроме того, я имею Question
и Answer
модели и я хотим связаться с ними со специализированным URL как так:
С вашим маршрутом все в порядке. Просто не забудьте определить его в конце, после определения всех остальных маршрутов. Я бы также рекомендовал использовать маршруты 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'
Просто черновик, который можно продлить.
Для создания урлов вам нужно определить метод to_param
для вашей модели пользователя (читайте здесь).
class User < ActiveRecord::Base
def to_param
username
end
end
Я использовал вот так
Часть просмотра
портфолио.user.name,: id => портфолио)%>и в rout.rb
map.show_portfolio "portfolios /: username",: action => 'show_portfolio',: controller => ' портфели '