Как починить разбитую трассировку устройства в путешествии 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'} %>
и роутинг начал работать.