Ошибка маршрутизации на Rails 3 - PullRequest
0 голосов
/ 04 марта 2011

Я работаю над страницей профиля, поэтому конфигурация такая:

routes.rb
=><code> match "user/:login(*path)" => 'users#profile', :as => :profile</code>
rake routes
=> profile    /user/:login(*path)(.:format)    {:action=>"profile", :controller=>"users"}
on console
> <code>Rails.application.routes.recognize_path("/user/example/whatever")</code>
=> {:action=>"profile", :login=>"example", :controller=>"users", :path=>"/whatever"}

И у меня есть действие профиля в UsersControllers.Но когда я использую

&lt%= link_to user.name, profile_path(user.login) %>

в представлении, я получаю ошибку

No route matches {:login=>"example", :controller=>"users", :action=>"profile"}

Чего мне не хватает?Спасибо

Обновление:
Спасибо за ответ и внимание, Стив!

После долгих попыток коллега нашел то, чего мне не хватало: проблемабыло только с некоторыми логинами, которые тоже являются электронными письмами, с "@", "." и т. д. Решением было добавление to_url в params [: login] в link_to:

&lt%= link_to 'name', profile_path(params[:login]<strong>.to_url</strong>) %>

Еще раз спасибо за внимание!

1 Ответ

0 голосов
/ 09 марта 2011

Используя вашу конфигурацию, кажется, что маршрут и помощник работают нормально в примере приложения Rails 3.0.5.

Я проверил вспомогательный маршрут profile_path в консоли Rails:

>> app.profile_path('example')
=> "/user/example"

и проверил, что это работает и в представлении:

<%= link_to 'name', profile_path(params[:login]) %>

Нет ошибок маршрута ни в одном месте. А добавление <% = debug (params)%> в представление показывает, что путь '/ user / example / what' обрабатывается правильно:

--- !map:ActiveSupport::HashWithIndifferentAccess 
controller: users
action: profile
login: example
path: /whatever
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...