Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 导轨使用连杆的正确方法_Ruby On Rails - Fatal编程技术网

Ruby on rails 导轨使用连杆的正确方法

Ruby on rails 导轨使用连杆的正确方法,ruby-on-rails,Ruby On Rails,我正在开始使用rails和Desive进行身份验证,我想创建一个链接,以便在用户登录到管理页面时注销 编写代码链接的正确方法是什么 这是我的耙路线: admin_index /admin/index(.:format) {:controller=>"admin/home", :action=>"index"} new_user_session GET /users/sign_in(.:format) {:action=&

我正在开始使用rails和Desive进行身份验证,我想创建一个链接,以便在用户登录到管理页面时注销

编写代码链接的正确方法是什么

这是我的
耙路线

admin_index        /admin/index(.:format)         {:controller=>"admin/home", :action=>"index"}
        new_user_session GET    /users/sign_in(.:format)       {:action=>"new", :controller=>"devise/sessions"}
            user_session POST   /users/sign_in(.:format)       {:action=>"create", :controller=>"devise/sessions"}
    destroy_user_session DELETE /users/sign_out(.:format)      {:action=>"destroy", :controller=>"devise/sessions"}
           user_password POST   /users/password(.:format)      {:action=>"create", :controller=>"devise/passwords"}
       new_user_password GET    /users/password/new(.:format)  {:action=>"new", :controller=>"devise/passwords"}
      edit_user_password GET    /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
                         PUT    /users/password(.:format)      {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET    /users/cancel(.:format)        {:action=>"cancel", :controller=>"devise/registrations"}
       user_registration POST   /users(.:format)               {:action=>"create", :controller=>"devise/registrations"}
   new_user_registration GET    /users/sign_up(.:format)       {:action=>"new", :controller=>"devise/registrations"}
  edit_user_registration GET    /users/edit(.:format)          {:action=>"edit", :controller=>"devise/registrations"}
                         PUT    /users(.:format)               {:action=>"update", :controller=>"devise/registrations"}
                         DELETE /users(.:format)               {:action=>"destroy", :controller=>"devise/registrations"}
              home_index GET    /home/index(.:format)          {:controller=>"home", :action=>"index"}
                    root        /                              {:controller=>"home", :action=>"index"}
我尝试了
,但当我单击链接时,它显示错误:

No route matches [GET] "/users/sign_out"
由此,建议在以下方面:


  • '删除'%>

  • 问题的根本错误在于您没有在“链接到”中使用RESTful路由

    您应该将代码更正为:

    <%= link_to "Sign Out", destroy_user_session_path, :method => :delete %>
    

    你说我没有使用restful路线是什么意思?几乎所有这些路线都是由te Desive gem生成的。好吧,我错了。我纠正了令人困惑的文字。您应该以RESTful方式调用'link_to'(使用参数'method'),所以我只需要
    :method=>:delete
    ,因为它是delete方法而不是post方法?对于所有指向delete方法的链接都是这样吗?是的,您是对的,始终对RESTful路由使用
    :method=>:delete/:put/:post
    。指向示例应用程序的链接是broken@RomanPushkin谢谢,我已经将代码更新为一个新的示例,它以相同的方式工作,并且不是来自一个死的存储库,可能是
    <%= link_to "Sign Out", destroy_user_session_path, :method => :delete %>
    
    DELETE /users(.:format)  {:action=>"destroy", :controller=>"devise/registrations" }