jPushMenu.js有一个正在进行e.preventDefault()
调用的处理程序。如果我删除了这一行事件处理程序,我就会停止看到不良行为。 jPushMenu现在还有一个新版本的代码,不使用此e.preventDefault()
调用,这也解决了我的问题。对于遇到类似问题的人来说,问题如下,但可能不是他们的新版本。
我在链接中遇到问题,我在method: :delete
帮助器中指定了link_to
,如下所示:
<li>
<%= link_to raw('<span class="glyphicon glyphicon-off"></span> Sign out'),
signout_path,
method: :delete %>
</li>
即使我像上面那样指定method: :delete
,并且呈现的HTML确实包含data-method="delete"
属性,点击该链接也会发出GET
请求。
直到我将以下文件添加到app/assets/javascripts/
目录:jPushMenu.js之前,这一直不是问题。如下所示,我通过带有行//= require_tree .
的应用程序javascript清单文件包含此文件。基本上,一旦我添加了一个不同的,移动友好的bootstrap风格的导航栏,我的注销链接就会崩溃。
我真的想知道如何使推送菜单导航栏工作,同时也允许我的注销链接像以前一样工作,但我不知道我在这里缺少什么。我害怕的一件事是,我有这么多的javascript文件,有些东西可能会踩到另一个,也许我最终加载它们的顺序?有没有其他人有任何想法为什么会出现这种情况?
您会注意到我的链接位于<li>...</li>
标记中。这是因为此链接显示在导航标题对象的引导样式下拉列表中。其他StackOverflow问题(我实际上可以找到的大多数问题)表明使用button_to
帮助程序而不是link_to
帮助程序可以解决问题。它绝对有效。但是现在我的下拉列表中有一个奇怪的按钮,并且所有引导样式都忽略了下拉列表的这一部分,因为它正在寻找<a>
标记,而不是<button style="button">
标记。
更直接的问题:在哪里调试这个好地方?如果Rails处理data-method
属性并使用javascript发出DELETE请求,那么应该将应用程序代码的哪一部分放入断点?
(以下是您可能想要或不想看的文件和输出......)
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require autocomplete-rails
//= require turbolinks
//= require bootstrap-sprockets
//= require bootstrap
//= require moment
//= require bootstrap-datetimepicker
//= require bootstrap-select
//= require bootstrap-tokenfield
//= require underscore
//= require gmaps/google
//= require fullcalendar
//= require fullcalendar/gcal
//= require_tree .
...
source 'https://rubygems.org'
ruby '2.1.2'
gem 'rails'
gem 'bootstrap-sass'
gem 'sass-rails', '~> 4.0.0'
gem 'autoprefixer-rails'
gem 'bootstrap_form'
gem 'bcrypt-ruby'
gem 'faker', '1.1.2'
gem 'will_paginate'
gem 'bootstrap-will_paginate'
gem 'state_machine'
gem 'twitter_cldr'
gem 'pg'
gem 'figaro'
gem 'jquery-turbolinks'
gem 'uglifier'
gem 'coffee-rails'
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'turbolinks'
gem 'jbuilder'
gem 'mail_form'
gem 'ransack'
gem 'momentjs-rails'
gem 'bootstrap3-datetimepicker-rails'
gem 'date_validator'
gem 'gmaps4rails'
gem 'geocoder'
gem 'bootstrap-select-rails'
gem 'fullcalendar-rails'
gem 'wepay'
gem 'omnicontacts', '~> 0.3.5', git: 'git://github.com/Diego81/omnicontacts.git'
gem 'rails4-autocomplete'
gem 'paperclip'
gem 'aws-s3'
gem 'aws-sdk'
gem 'mail'
gem 'mailboxer'
gem 'bootstrap_tokenfield_rails'
group :development, :test do
gem 'better_errors'
gem 'binding_of_caller'
gem 'rspec-rails', '2.14.0'
gem 'guard-rspec', '2.5.0'
gem 'meta_request'
end
group :test do
gem 'selenium-webdriver', '2.35.1'
gem 'capybara', '2.1.0'
gem 'factory_girl_rails', '4.2.1'
end
group :doc do
gem 'sdoc', '0.3.20', require: false
end
group :production do
gem 'rails_12factor'
end
...
match '/signout', to: 'sessions#destroy', via: 'delete'
...
rake routes
...
sessions POST /sessions(.:format) sessions#create
new_session GET /sessions/new(.:format) sessions#new
session DELETE /sessions/:id(.:format) sessions#destroy
...
答案 0 :(得分:0)
jPushMenu.js有一个正在进行e.preventDefault()调用的处理程序。如果我删除了这一行事件处理程序,我就会停止看到不良行为。 jPushMenu现在还有一个新版本的代码,不使用这个e.preventDefault()调用,这也解决了我的问题。对于遇到类似问题的人来说,问题如下,但可能不是他们的新版本。