【问题标题】:How to use the delete method in Devise for sign out? rails route failure (performing get)如何使用 Devise 中的删除方法进行注销? rails route failure(执行get)
【发布时间】:2014-01-14 00:10:03
【问题描述】:

所以我构建了一个可挂载引擎并添加了用于身份验证的设计:

由于某种原因,链接上的 :delete 方法正在执行获取这里是相关代码:

Index.html.erb

<%= link_to 'Logout', destroy_user_session_path, :method => :delete, :class => 'navbar-link' %>

Config/initializers/devise.rb

config.sign_out_via = :delete

路线

destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy

错误

No route matches [GET] "/my_engine/users/sign_out"

config.sign_out_via = :delete 更改为config.sign_out_via = :get 解决了问题并允许我注销,但是这是错误的做法,注销应该是删除,如果有人有任何想法,我希望它能够正常工作

附加信息(Gems + Ruby 版本 + 注销链接页面上显示的实际 HTML)

我正在使用ruby-1.9.3-p398

这是页面上显示的布局链接的html

<a class="navbar-link" data-method="delete" href="/antithetical/users/sign_out" rel="nofollow">Logout</a>

还有宝石:

Using rake (10.1.1)
Using i18n (0.6.9)
Using minitest (4.7.5)
Using multi_json (1.8.4)
Using atomic (1.1.14)
Using thread_safe (0.1.3)
Using tzinfo (0.3.38)
Using activesupport (4.0.2)
Using builder (3.1.4)
Using erubis (2.7.0)
Using rack (1.5.2)
Using rack-test (0.6.2)
Using actionpack (4.0.2)
Using mime-types (1.25.1)
Using polyglot (0.3.3)
Using treetop (1.4.15)
Using mail (2.5.4)
Using actionmailer (4.0.2)
Using activemodel (4.0.2)
Using activerecord-deprecated_finders (1.0.3)
Using arel (4.0.1)
Using activerecord (4.0.2)
Using bcrypt-ruby (3.1.2)
Using orm_adapter (0.5.0)
Using thor (0.18.1)
Using railties (4.0.2)
Using warden (1.2.3)
Using devise (3.2.2)
Using bundler (1.5.2)
Using hike (1.2.3)
Using tilt (1.4.1)
Using sprockets (2.10.1)
Using sprockets-rails (2.0.1)
Using rails (4.0.2)

【问题讨论】:

    标签: ruby-on-rails devise routing rails-engines


    【解决方案1】:

    所以我发现引擎(可能只是 --mountable)不包含 jquery 来执行 :delete:post 之类的操作,所以我的解决方法是包含 jquery-rails

    engine.gemspec

    + s.add_dependency "jquery-rails"
    

    app/assets/javascripts/engine/application.js

    +//= require jquery
    +//= require jquery_ujs
    +//= require_tree .
    

    【讨论】:

    • @Oskar 据我所知,我不需要在 engine.rb 中使用“jquery-rails”,这应该像在 rails 应用程序中一样自动加载?
    • 不适合我。也许你在你的应用程序中使用了jquery-rails,所以它不需要加载到引擎中?我的引擎有一个带有自己的 Web 界面的仪表板,而我的主应用程序只有一个 API,所以我没有在那里使用 jquery-rails。在该设置中,我需要在引擎中要求 jquery-rails 才能使一切正常运行。
    【解决方案2】:

    同样的问题。 我只是添加:

    #layouts/application.html.haml

    = javascript_include_tag "application"
    

    【讨论】:

      猜你喜欢
      • 2018-11-01
      • 1970-01-01
      • 2013-04-18
      • 2017-07-09
      • 2013-09-25
      • 2020-08-22
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      相关资源
      最近更新 更多