Как починить разбитую трассировку устройства в путешествии 1.0.4

Я начал устранять неполадки, связанные с моей "внезапной" ошибкой маршрутов, в этом вопросе SO: Devise / users / sign_in перенаправил на неправильный контроллер и с помощью этого я смог изолировать проблему для обновления с пути 1.0.3 до 1.0.4, которая возникла, когда я обновлено до рельсов 3.2.7.

Как вы знаете, мы должны быть на рельсах 3.2.8, чтобы применить важные исправления безопасности, но это означает, что я должен использовать путешествие 1.0.4, которое нарушает мои маршруты разработки. Например, мой пользовательский маршрут new_user_session - welcome#welcome, но он декодируется в devise/welcome#welcome, который не существует.

Кто-нибудь еще сталкивался с этим любовным треугольником, и если да, то как вы сделали путешествие 1.0.4 хорошим в разработке?

Маршруты, которые нарушены (корневые и разработанные маршруты:

    devise_for :users   
    devise_scope :user do
       get "/login"    => "devise/sessions#new"
       get "/register" => "devise/registrations#new"
    end  
    match '/signout/confirm' => 'signouts#confirm'

    root :to => "welcome#welcome"

================================================== ==============

Изменить: 2012-09-05

Решение:

Я нашел оскорбительный LOC:

link_to_unless_current( logo_image, { :controller => 'welcome', :action => 'welcome' } )

Я изменил это на:

link_to_unless_current( logo_image, { :controller => '/welcome', :action => 'welcome' } )

но безрезультатно.

Из любопытства я изменил его на:

link_to( logo_image, { :controller => '/welcome', :action => 'welcome' } )

и это сработало, как и:

link_to( logo_image, { :controller => 'welcome', :action => 'welcome' } )

Итак, последнее, что я попробовал, было:

link_to_unless_current( logo_image, root_path )

который работал, и теперь все хорошо со вселенной.

POSTMORTEM: Моя неопытность с документацией по рельсам привела меня к выводу, что пока link_to() будет принимать root_path в качестве параметра, что link_to_unless_current() не будет. Только когда я посмотрел на исходный код для методов, я обнаружил (и должен был предположить все это время), что link_to_unless_current() построен на вершине link_to_unless()который, в свою очередь, построен на вершине link_to(),

Большое спасибо людям, которые помогли в этой теме и в предыдущей.

1 ответ

Решение

У меня была похожая проблема с поездкой 1.0.4 и разработкой в ​​моем маленьком учебном проекте по Rails, где загрузка страницы регистрации разработки завершилась ошибкой маршрутизации. Мне удалось решить эту проблему, изменив ссылки, которые были добавлены в заголовок сайта, с помощью views/layouts/application.html.erb и его частей.

Я изменил ссылки, как это:

<%= link_to 'Home', {:controller=>'welcome', :action=>'index'} %>

чтобы:

<%= link_to 'Home', {:controller=>'/welcome', :action=>'index'} %>

и роутинг начал работать.

Другие вопросы по тегам