【问题标题】:index.js.erb not loading in railsindex.js.erb 未在 rails 中加载
【发布时间】:2013-03-15 17:53:51
【问题描述】:

我在创建 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 文件没有加载,因为我没有看到警报?有什么想法吗?

【问题讨论】:

  • 您是否要求以正确的格式结尾,例如/images.js?如果你想让 Rails 渲染你的 'index.js.erb',你的 url 必须以.js 格式请求。
  • 同时检查您的服务器日志并确保投票不是发出 HTML 请求而不是 JS 请求。
  • @HungryCoder 如何确保我的 url 构成 .js 请求表单?
  • @varatis 感谢您的回复,我在哪里可以找到服务器日志?
  • 您的控制台上没有运行 Rails 服务器吗?这是不断打印到控制台上的内容

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


【解决方案1】:

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

您可以简单地将.js 附加到您的代码中的 URL:

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

不过,更好的做法是使用 rails 辅助方法。例如:

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”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多