Javascript Rails 3中的jQuery带有;开始轨道3“;

Javascript Rails 3中的jQuery带有;开始轨道3“;,javascript,jquery,ruby-on-rails,ruby-on-rails-3,Javascript,Jquery,Ruby On Rails,Ruby On Rails 3,我正在通过Carneiro和Barazi的“开始Rails 3”学习如何使用Rails。最终目标是建立一个功能性博客。这本书面向Rails 3.0,我运行的是3.2,所以我使用jQuery,而他们使用的是Ajax的原型。有一次,他们要求您从处理切换到jQuery,我跳过了。后来,当他们开始使用js代码时,他们让你把这个代码 <%= render @article %> <h3>Comments</h3> <div id="comments">

我正在通过Carneiro和Barazi的“开始Rails 3”学习如何使用Rails。最终目标是建立一个功能性博客。这本书面向Rails 3.0,我运行的是3.2,所以我使用jQuery,而他们使用的是Ajax的原型。有一次,他们要求您从处理切换到jQuery,我跳过了。后来,当他们开始使用js代码时,他们让你把这个代码

<%= render @article %>
<h3>Comments</h3>
<div id="comments">
  <%= render @article.comments %>
</div>
<%= link_to "new comment", new_article_comment_path(@article, :format => :js), :remote => true, :id => 'new_comment_link' %>
$("<%= escape_javascript render(:file => 'comments/new.html.erb') %>").insertAfter('#comments');
$('#new_comment_link').hide();

评论
:js),:remote=>true,:id=>new\u comment\u link'>
进入“article”视图,并输入此代码

<%= render @article %>
<h3>Comments</h3>
<div id="comments">
  <%= render @article.comments %>
</div>
<%= link_to "new comment", new_article_comment_path(@article, :format => :js), :remote => true, :id => 'new_comment_link' %>
$("<%= escape_javascript render(:file => 'comments/new.html.erb') %>").insertAfter('#comments');
$('#new_comment_link').hide();
$(“'comments/new.html.erb')%>”).insertAfter(“#comments”);
$(“#新建_注释_链接”).hide();
进入新建注释视图中的javscript文件,该文件在创建新注释时起作用。其思想是,当你显示一篇文章时,它会显示所有的评论和一个创建新评论的链接。单击该链接时,它会从“新建注释”视图加载新的注释字段,而不是一直在那里。然而,当我加载我的博客并点击“新评论”链接时,什么也没发生。我试着按照书中的说明(放在jquery.min.js文件中,放在jquery适配器中)但它似乎不起作用(我认为一开始就不应该放进去)。有什么想法吗?非常感谢您的帮助

1)您包括jquery rails gem了吗?它有助于将jquery连接到rails,您无需自己手动添加jquery.min.js文件

2) 您是否尝试过在javascript文件中添加警报以确保它正在运行


3) 你有没有检查过你的开发日志,看看当它点击新的评论url时发生了什么,看看上面写了什么?

我花了三天时间调试了一个类似的问题[1]:http://stackoverflow.com/questions/9666929/simple-rails-ajax-call-wont-process-as-js

首先,Rails3.2使用gem。将其放入您的GEM文件并运行bundle安装

第二(正如页面所说)您需要确保这两个都包括在内,尽管它们是默认设置的:在app/assets/javascripts/application.js中,您应该有

//= require jquery
//= require jquery_ujs
请注意,jQueryUJS实际上在这里发挥了很大的作用

有两件事可以打破:

  • 控制器可能无法正确接收ajax请求
  • 你的回答可能不起作用

  • 要查看哪种情况,请查看服务器输出或日志。它是否显示正在执行新的文章注释?它是否显示“以JS方式处理”

    好的,我检查了服务器输出和开发日志,控制器没有正确响应-新的文章注释从未运行过。我现在修好了。非常感谢。谢谢,施曼克斯——我需要在这里得到100分!投票/接受答案!:-)事实上,j,我刚刚意识到你是StackOverflow的新手,或者他们所说的。这是一个救命恩人,我希望你在未来有一个美好的时光。提示:当你达到50分时,你可以在任何问题上发表这些评论。