Rails:格式JS没有被数据远程拾取

时间:2012-02-24 02:48:42

标签: ruby-on-rails ajax ruby-on-rails-3 jquery

JS没有被每个链接的数据远程接收。我正在尝试创建一个投票和未投票的按钮,就像旧的digg.com投票按钮一样。此时因为没有拿起JS,我有两个按钮,每个按钮分别用于投票和取消投票,我想将两者结合起来。我不确定为什么JS没有被接收。有什么建议?谢谢。

Micropost Controller

class MicropostsController < ApplicationController 
  def vote_up
    @micropost = Micropost.find(params[:id])
    current_user.vote_exclusively_for(@micropost)
    respond_to do |format|
      format.html { redirect_to :back }
      format.js
      end
  end

   def unvote
    @micropost = Micropost.find(params[:id])
    current_user.vote_exclusively_against(@micropost)
    respond_to do |format|
      format.html { redirect_to :back }
      format.js
      end
  end
end

JS档案

* vote_up.js *

$("#<%=@micropost.id%>").html('<%="#{@micropost.votes_for}"%>');
$("#vote-<%=@micropost.id%>").html('<a href="/microposts/<%=@micropost.id%>/unvote" data-remote="true" class="CounterButton b2 <%=@micropost.id%>"></a>');

unvote.js

$("#<%=@micropost.id%>").html('<%="#{@micropost.votes_for}"%>');
$("#unvote-<%=@micropost.id%>").html('<a href="/microposts/<%=@micropost.id%>/vote_up" data-remote="true" class="CounterButton b2 <%=@micropost.id%>"><span class="CounterIcon <%=@micropost.id%>"></span></a>');

Micropost HTML

<div class='Counter'>
<span class='CounterNum'><span id='<%= micropost.id%>'><%=micropost.votes_for %></span></span>
<div id='vote-<%=micropost.id %>'>
<a href="/microposts/<%=micropost.id %>/vote_up" data-remote='true' class='CounterButton b2'>
<span class='CounterIcon'></span>
</a>
</div>
<div id='unvote-<%=micropost.id %>'>
<a href="/microposts/<%=micropost.id %>/unvote" data-remote='true'class='CounterButton b2'>
<span class='CounterIcon'></span>
</a>
</div>
</div>

1 个答案:

答案 0 :(得分:1)

尝试将您对javascript_include_tag的所有来电合并为一个来电,还包括jquery_ujs

javascript_include_tag :jquery, :jquery_ujs, :modal, :basic_js, 'http://www.google.com/jsapi

虽然你在使用Rails 3.2,但你应该真正利用资产管道,你可以在这里阅读更多信息:

http://guides.rubyonrails.org/asset_pipeline.html

您的application.js看起来像这样:

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

然后你会这样做:

javascript_include_tag :application

但首先尝试其他方法。