rails 4,link_to在jquery时不使用destroy动作,需要jquery_ujs

时间:2013-10-16 02:49:04

标签: javascript jquery ruby-on-rails ruby ruby-on-rails-4

如果在application.js文件中需要jquery,那么destroy动作是如何不兼容的?如何在不忽视jquery的情况下让destroy操作再次起作用?

发布索引视图:

h1 Blog
- @posts.each do |post|
 h2 = link_to post.title, post
 p = post.content
 p = link_to 'Edit', edit_post_path(post)
 p = link_to 'Delete', post, data: {confirm: "Are you sure?"}, method: :delete
 br

p = link_to 'Add a new post', new_post_path

破坏帖子控制器中的动作:

def destroy
 @post = Post.find params[:id]
 @post.destroy

 redirect_to posts_path, :notice => "Your post has been deleted"
end

的application.js:

= require jquery
= require jquery_ujs
//= require turbolinks
//= require_tree

一旦我评论这两个,毁灭行动再次起作用。没有评论,删除链接只会触发节目动作...你的想法?

3 个答案:

答案 0 :(得分:3)

因此资产管道对这些评论做了一些特别的事情。存在表格的评论

//= require jquery

指示预处理器在构建应用程序客户端的application.js时包含该文件。删除注释后,您将删除此行为 - 并且生成的库不会编译到应用程序提供的最终application.js中。

这样做的结果是你误解了所需指令的工作原理。它只适用于评论。删除注释标记后,您将停止包含库。

答案 1 :(得分:0)

application.js是一个清单文件,因此假设语法包含这些注释。见http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives

答案 2 :(得分:0)

如果您复制并粘贴了网站http://guides.rubyonrails.org/getting_started.html中的代码,请尝试输入代码。

或删除所有领先的空白'这可能不是空白。 不知怎的,我得到了ascii 160而不是ascii 32(空白字符)。

我确定它是如何发生的,但现在再次复制和粘贴工作正常。