index.js.erb没有在rails中加载

时间:2013-03-15 17:53:52

标签: javascript jquery ruby-on-rails coffeescript erb

我在使用index.js.erb时遇到了问题,我已创建但未执行。我的控制器中有以下内容:

def index
    @images = Image.order('id desc')

    respond_to do |format|
      format.js
      format.html
    end
end

以下是我的index.js.erb:

alert("it works")

如果这也有帮助,我在这个项目的咖啡脚本文件中有以下内容:

ImagePoller =
poll: ->
    setTimeout @request, 5000

request: ->
    $.get($('#images').data('url'))

jQuery ->
if $('#images').length > 0
    ImagePoller.poll()

我可以告诉js.erb文件没有加载,因为我没有看到警报?有什么想法吗?

1 个答案:

答案 0 :(得分:2)

要发出ajax请求,您要从'#images'元素中检索网址。您需要确保您的网址包含正确的格式。

您只需在代码中附加带{URL的.js

request: ->
    $.get($('#images').data('url')) + '.js'

但是,更好的方法是使用rails helper方法。例如:

<强> HAML

#images{:'data-url' => url_for(:action => 'index', :format => 'js')}

<强> ERB

<div id="images" data-url="<%=url_for(:action => 'index', :format => 'js')%>"></div>

后一种情况已在URL中包含'.js'。所以你不需要在我刚开始时显示的末尾添加'.js'。