2014-09-27 3 views
0

У вас есть страница пользователя с адресом http://localhost:3000/users/10, когда я нажимаю кнопку на других страницах адреса, например http://localhost:3000/info, браузер делает перенаправление на страницу http://localhost:3000/users/info и показывает ошибку Couldn't find User with 'id'=info. Как исправить? Мой routes.rbКак перейти на другую страницу со страницы пользователя?

Rails.application.routes.draw do 

    resources :users 
    resources :sessions, only: [:new, :create, :destroy] 
    get 'static_page/index' 
    match '/signin', to: 'sessions#new', via: 'get' 
    match '/new', to: 'users#new', via: 'get' 
    match '/info', to: 'static_page#info', via: 'get' 
    match '/faculty', to: 'static_page#faculty', via: 'get' 
    match '/about', to: 'static_page#about', via: 'get' 
    match '/contacts', to: 'static_page#contacts', via: 'get' 
    # The priority is based upon order of creation: first created -> highest priority. 
    # See how all your routes lay out with "rake routes". 

    # You can have the root of your site routed with "root" 
    root 'static_page#index' 

ответ

0

Объявите ваши "статические" маршруты до resources :users.

Rails.application.routes.draw do 
    # The priority is based upon order of creation: first created -> highest priority. 
    # See how all your routes lay out with "rake routes". 

    # You can have the root of your site routed with "root" 
    root 'static_page#index' 

    # less verbose than match ... via: 'get' 
    get 'static_page/index' # do you really need this? 
    get '/signin', to: 'sessions#new' 
    get '/new',  to: 'users#new' 
    get '/info',  to: 'static_page#info' 
    get '/faculty', to: 'static_page#faculty' 
    get '/about',  to: 'static_page#about' 
    get '/contacts', to: 'static_page#contacts' 

    resources :users 
    resources :sessions, only: [:new, :create, :destroy] 

    #... 

end 
+0

ничего не изменилось, я думаю, что это связано с другим – 138weare

+0

Вы попробовали перезагрузить сервер? Я попробовал это, и шаблон маршрутизации действительно работает. Это ваш весь файл 'routes.rb' (его отсутствует ключевое слово' end')? Также может быть что-то в вашем файле 'application_controller.rb' – max

+0

да, конечно, я перезагрузил сервер. Возможно, вы меня не поняли, когда я нахожусь в http: // localhost: 3000/users/10, и я нажимаю кнопку «факультет», затем я не перенаправляюсь на http: // localhost: 3000/факультет и на http: // localhost: 3000/users/faculty.Но страница http: // localhost: 3000/users/faculty не существует, и в браузере отображается ошибка. – 138weare

1

Вы строите относительные ссылки, как это:

<a href="info">Info</a> 

Но вместо этого вы должны строить абсолютные URL'ы так:

<a href="/info">Info</a> 

Ваши ссылки должны начинаться с /. То же самое, если вы используете link_to помощника: link_to('Info', '/info')

Было бы еще лучше, если дать каждому URL-адресу имя, как это:

get '/info', to: 'static_page#info', as: 'info' 

Чем вы можете использовать это имя, когда вам нужно создать ссылку:

link_to('info', info_path) 
+0

теперь я постараюсь, спасибо u man! – 138weare

Смежные вопросы