首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导致link_to方法的javascript依赖关系::销毁发出GET请求的

导致link_to方法的javascript依赖关系::销毁发出GET请求的
EN

Stack Overflow用户
提问于 2014-11-26 02:31:25
回答 1查看 435关注 0票数 0

更新(2015年2月26日):

jPushMenu.js有一个正在进行e.preventDefault()调用的处理程序。如果我删除了这一行事件处理程序,我就不再看到不良行为。jPushMenu现在也有了一个新版本的代码,它不使用这个e.preventDefault()调用,这也解决了我的问题。下面这个问题适用于遇到类似问题的人,但很可能不是因为他们是新版本。

问题:

我在link_to助手中指定link_to的链接有问题,如下所示:

代码语言:javascript
复制
<li>
  <%= link_to raw('<span class="glyphicon glyphicon-off"></span>&nbsp;&nbsp;&nbsp;Sign out'), 
              signout_path, 
              method: :delete %>
</li>

尽管我像上面那样指定了method: :delete,并且呈现的data-method="delete"确实包含了data-method="delete"属性,但是单击链接会发出一个GET请求。

在我将以下文件添加到我的app/assets/javascripts/目录之前,这从来都不是一个问题:jPushMenu.js。如下面所示,我通过//= require_tree .行的应用程序javascript清单文件来包含这个文件。基本上,当我添加了一个不同的,移动友好的引导风格的导航栏时,我的签名链接就中断了。

我真的很想知道如何使推送菜单导航条工作,同时也允许我的登录链接像以前一样工作,但我不知道我在这里还缺少了什么。我害怕的一件事是,我有太多的javascript文件,可能会有东西踩在另一个文件上,也许是我最终加载它们的顺序?还有人知道为什么会是这样吗?

对于其他类似的StackOverflow问题:

您会注意到,我的链接位于<li>...</li>标记中。这是因为该链接出现在我的nav标题对象中的引导样式下拉列表中。其他StackOverflow问题(我实际上可以找到其中的大多数问题)建议使用button_to助手而不是link_to助手来解决问题。而且肯定管用。但是现在我的下拉列表中有一个看起来很奇怪的按钮,所有的引导样式都忽略了下拉列表的这一部分,因为它正在寻找一个<a>标记,而不是一个<button style="button">标记。

更有针对性的问题:哪里是调试这个的好地方?如果Rails处理属性并使用javascript发出删除请求,那么应用程序代码的哪一部分可以放置断点?

(下面是您可能希望或不想查看的文件和输出.)

application.js:

代码语言:javascript
复制
//= 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 .
...

Gemfile:

代码语言:javascript
复制
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

routes.rb

代码语言:javascript
复制
...
match '/signout', to: 'sessions#destroy', via: 'delete'
...

rake routes输出

代码语言:javascript
复制
...
sessions     POST    /sessions(.:format)      sessions#create
new_session  GET     /sessions/new(.:format)  sessions#new
session      DELETE  /sessions/:id(.:format)  sessions#destroy
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-26 23:34:42

jPushMenu.js有一个正在进行e.preventDefault()调用的处理程序。如果我删除了这一行事件处理程序,我就不再看到不良行为。jPushMenu现在也有了一个新版本的代码,它不使用这个e.preventDefault()调用,这也解决了我的问题。下面这个问题适用于遇到类似问题的人,但很可能不是因为他们是新版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27140391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档