1

我开始在这个 SO 问题中解决我的“突然”中断路由问题: 设计 /users/sign_in 重定向到错误的控制器,并在帮助下,我能够将问题隔离到从旅程 1.0.3 升级到 1.0.4 时发生的问题更新到轨道 3.2.7。

如您所知,我们需要使用 rails 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 )

这奏效了,现在宇宙一切都很好。

事后分析:由于我对 rails 文档缺乏经验,我推断虽然link_to()会接受 root_path 作为参数,但事实link_to_unless_current()并非如此。直到我查看了方法的源代码,我才发现(并且应该一直假设)它link_to_unless_current()是建立link_to_unless()link_to().

非常感谢在此线程和上一个线程中提供帮助的人们。

4

1 回答 1

3

我在旅程 1.0.4 中遇到了类似的问题,并在我的小 Rails 学习项目中进行了设计,其中加载设计注册页面失败并出现路由错误。我能够通过更改 view/layouts/application.html.erb 及其部分添加到站点标题的链接来解决问题。

我改变了这样的链接:

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

至:

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

和路由开始工作。

于 2012-09-04T06:49:15.250 回答