首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >$(函数)在Rails 3.2.1应用程序中被调用两次

$(函数)在Rails 3.2.1应用程序中被调用两次
EN

Stack Overflow用户
提问于 2012-02-23 08:15:00
回答 3查看 2.1K关注 0票数 3

我有一个Rails 3.2.1应用程序,我正在尝试在其中包含一些jquery。

以下是这些文件:

states.js:

代码语言:javascript
运行
复制
var grid;

var columns = [
 {id: "firstName", name: "FirstName", field: "FirstName"},
 {id: "lastName", name: "LastName", field: "LastName"}
]



var options = {
 enableCellNavigation: true,
 enableColumnReorder: false
};

$(function () {
 alert("hi");
 var state = $("#myGrid").data("state");
 $.getJSON(state, function(data){
    grid = new Slick.Grid("#myGrid", data, columns, options);
});
})

states_controller.rb:

代码语言:javascript
运行
复制
class StatesController < ApplicationController
def index
  @states = SiteIndexPlayer.select("DISTINCT HometownState")
end

def name
  logger.debug(":name #{params[:name]}")
  @athletes = SiteIndexPlayer.select('FirstName, LastName').find_all_by_HometownState(params[:name])
  @state=params[:name]
  respond_to do |format|
    format.html
    format.json { render json: @athletes }
  end
end
end

每次加载页面时,我都会弹出两次“嗨”。

是否有2个请求出于某种原因发出?

谢谢

问题

原来states.js被加载到DOM中两次。我没有预编译资产。为什么文件会被加载两次,还有其他的想法吗?

解决方案

代码语言:javascript
运行
复制
ls app/assets/javascripts
application.js  lib     slick.core.js   slick.grid.js states.js.coffee  states.js 

我猜states.js.coffeeapplication.js一样也在加载文件。一旦我删除了states.js.coffee,它就工作得很好。

知道我可以在哪里读到*.coffee吗?

编辑

application.js:

代码语言:javascript
运行
复制
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .

application.html.erb

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
<head>
  <title>CapApp</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-24 01:51:24

我猜states.js.coffee和application.js一样也在加载文件。一旦我删除了states.js.coffee,它就工作得很好。

票数 2
EN

Stack Overflow用户

发布于 2012-07-20 08:40:38

我在Rails 3.2.x中发现了同样的症状,我在environments/staging.rb文件中进行了设置

代码语言:javascript
运行
复制
# Expands the lines which load the assets
config.assets.debug = true

然而Capistrano被配置为预编译资产,因此我在application.js中有一个副本,在特定于控制器的.coffee文件中有另一个副本。将值设置为false为我解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2013-01-05 17:55:13

你有没有"rake assets:procompile"?如果是,请尝试"assets:clean“并运行服务器

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9405301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档