如何链接到rails中的其他控制器?

时间:2011-11-21 22:54:48

标签: ruby-on-rails devise

我正在学习Ruby on Rails,我对link_to函数有一个愚蠢的问题。

我设置了一个名为“home”的控制器,我创建了“index”作为动作。

我已经设定了设计。但是,当我浏览一些链接,例如sign_insign_up等时,我收到此错误:

Routing Error
No route matches {:controller=>"devise/home"}

我把它缩小到:

<%= link_to "Home", { :controller => "home", :action => "index" }, :class => "navlink" %>

这适用于我在家中的行为,但不适用于我的设计行动。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

Devise为您创建一组生成正确路径的辅助函数。从命令行运行rake routes以查看它们。您将获得类似于以下内容的输出(假设您的Devise模型名为User)。

              new_user_session GET    /users/sign_in(.:format)                      {:controller=>"devise/sessions", :action=>"new"}
                  user_session POST   /users/sign_in(.:format)                      {:controller=>"devise/sessions", :action=>"create"}
          destroy_user_session GET    /users/sign_out(.:format)                     {:controller=>"devise/sessions", :action=>"destroy"}
                 user_password POST   /users/password(.:format)                     {:controller=>"devise/passwords", :action=>"create"}
             new_user_password GET    /users/password/new(.:format)                 {:controller=>"devise/passwords", :action=>"new"}
            edit_user_password GET    /users/password/edit(.:format)                {:controller=>"devise/passwords", :action=>"edit"}
                 user_password PUT    /users/password(.:format)                     {:controller=>"devise/passwords", :action=>"update"}
             user_registration POST   /users(.:format)                              {:controller=>"devise/registrations", :action=>"create"}
         new_user_registration GET    /users/sign_up(.:format)                      {:controller=>"devise/registrations", :action=>"new"}
        edit_user_registration GET    /users/edit(.:format)                         {:controller=>"devise/registrations", :action=>"edit"}
             user_registration PUT    /users(.:format)                              {:controller=>"devise/registrations", :action=>"update"}
             user_registration DELETE /users(.:format)                              {:controller=>"devise/registrations", :action=>"destroy"}

_path附加到每行的第一部分,为您提供需要调用的辅助函数的名称。

例如,以下内容将为您提供登录页面的链接:

<%= link_to "Login", new_user_session_path %>

请注意,如果请求是DELETE而不是GET(例如退出链接),则需要在link_to调用中指定此请求。

<%= link_to "Logout", destroy_user_session_path, :method => :delete %>