我在使用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文件没有加载,因为我没有看到警报?有什么想法吗?
答案 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'。