Ruby Rails 3-自定义ajax操作不起作用

Ruby Rails 3-自定义ajax操作不起作用,ruby,ajax,ruby-on-rails-3,custom-action,Ruby,Ajax,Ruby On Rails 3,Custom Action,我想在Rails中创建一个自定义操作,它将更新视图并在div上打印一些信息 我使用该gem进行文件上传: 成功上传后,我想用ajax页面更新需要多少毫秒 在旧Rails中,我会用以下内容来写: def set_tab @diff = count_miliseconds_method render :update do |page| page.replace_html "place_menu", render( :partial => 'place_menu') end

我想在Rails中创建一个自定义操作,它将更新视图并在div上打印一些信息

我使用该gem进行文件上传:

成功上传后,我想用ajax页面更新需要多少毫秒

在旧Rails中,我会用以下内容来写:

def set_tab
  @diff = count_miliseconds_method
  render :update do |page|
    page.replace_html "place_menu", render( :partial => 'place_menu')
  end
end
但在Rails 3.1中,我不知道如何做到这一点

我的自定义操作控制器代码:

def custom
  [...] # Here everything works OK
  start_time = Time.now
  Some_method
  end_time = Time.now
  @diff = ((end_time - start_time)*100).to_i # counted miliseconds
  respond_to do |format|
    format.json {render :json => {:success => true, :time => @diff}, :status => :created, :location => custom_words_path}
  end
end
我的custom.js.erb代码

var el = $('#upload-log');
el.append("#{@diff} ms");
不幸的是,这不起作用。我得到了回应。
{“success”:true,“time”:324}
但是js.erb文件不会被执行,页面也不包含关于毫秒的信息

知道怎么解决吗

更新

Github回购:

您现在返回的JSON(在Rails 3.1中)不是一个包含Javascript的字符串块(就像以前一样)

您需要编写代码,在进行Ajax调用时处理结果。我假设您正在使用jQuery。因此,在进行Ajax调用的地方,实现成功处理程序并执行

var el = $("#upload-log"); 
...
那里的东西

基本上服务器不再返回Javascript,它完全只在客户端


您需要实现文件上传插件的onComplete方法。阅读你的js插件手册,它已经清楚地提到了。

要执行js.erb文件,你必须通过

:format => :js
到您的路径生成方法-例如:

link_to "My custom action", my_action_path(:format => :js)

不间断电源。所以这是一个更大的问题,因为我通过JS插件调用这个动作。。代码如下:阅读js手册。你需要为文件上传程序实现onComplete事件处理程序。我认为将操作更改为/words/uploader.js就足够了。但是@AdityaSanghi的建议也是可以的-你可以通过onComplete处理程序实现你想要的。