url myapp.com/@username в маршрутах рельсов - PullRequest
2 голосов
/ 28 октября 2010

Привет, у меня простой вопрос по рельсам, который я просто не могу понять. Как говорится в заголовке, я хочу, чтобы на странице показа моего контроллера пользователей был указан адрес myapp.com/@username, но я не знаю, как это сделать. Мое знание маршрутов должно быть в корне неверно.

мои ссылки теперь обычно выглядят так:

<%= link_to "#{@user.username}", :controller => "users", :action => "show", :username => @user.username %>

очевидно, что это не идеально. Я бы хотел, чтобы они выглядели так.

<%= link_to "#{@user.username}", user_path(@user) %>

но я не знаю, что делать. Вложенные маршруты не кажутся подходящими.

мои маршруты настроены так:

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

но это, по-видимому, просто позволяет мне делать то, что я делаю сейчас, не позволяет мне фактически проложить там путь. Какие-либо предложения? PS это рельсы 2.3.8 приложение.

Ответы [ 2 ]

3 голосов
/ 28 октября 2010

Ваш маршрут правильный, однако вы не дали ему имя:

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

Все заглавные буквы от меня, чтобы выделить то, что вам нужно изменить.Теперь вы можете позвонить user_path(:username => @user.username)

0 голосов
/ 28 октября 2010

В вашем файле маршрутов вам нужно настроить ресурс:

map.resources :users

Теперь у вас будут хорошие именованные маршруты, такие как user_path(@user), чтобы показать страницу пользователя и так далее. Если вам не нужны спокойные маршруты, вы также можете просто создать один именованный маршрут:

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

И user_path(@user) тоже будут работать.

Кстати, ваш пример входа в систему неверен. Во-первых, «: login» интерпретируется механизмом маршрутизации как переменная, но не используется. Кроме того, вы не хотели бы, чтобы страница показа пользователей была страницей входа. Для начала покажите, какой пользователь? они еще не вошли в систему. Надеюсь, это поможет!

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