Tag: coffeescript

使用把手迭代javascript对象

我正在尝试使用Handlebars注册帮助程序以允许迭代JSON对象。 这个要点看起来是一个合适的解决方案。 我将其转换为以下CoffeeScript。 当我使用任何一个帮助程序时,似乎没有任何事情发生(对于vanilla JavaScript和CoffeeScript版本都适用)。 有任何想法吗? $ -> Handlebars.registerHelper “key_value”, (obj, fn)-> buffer = “” key for key in obj if obj.hasOwnProperty(key) buffer += fn({key: key, value: obj[key]}) buffer Handlebars.registerHelper “each_with_key”, (obj, fn)-> context buffer = “” key keyName = fn.hash.key for key in obj if obj.hasOwnProperty(key) context = obj[key] if keyName context[keyName] = key […]

在HAML模板中使用:coffescriptfilter的性能影响?

所以HAML 4包含一个coffeescriptfilter ,它允许我们喜欢咖啡的人们做这样的整洁的事情: – word = “Awesome.” :coffeescript $ -> alert “No semicolons! #{word}” 我的问题:对于最终用户来说,这比使用等效的:javascriptfilter慢吗? 使用coffeescriptfilter是否意味着coffeescript将在每次加载页面时编译为javascript(这显然会造成性能灾难),或者这只会在应用程序启动时发生一次?

如何配置Rails 3.2 + / 4以生成.js而不是.js.coffee默认情况下?

我已经看到了这个问题的一些变体,其中所有答案只是建议从Gemfile删除coffee-rails gem( 这一个和这个 )。 这不是我要找的答案。 我可能仍想在项目中编写一些CoffeeScript,我只想将JavaScript( .js )作为Rails生成器的默认值。 这也意味着每次生成代码时 将.js.coffee重命名为.js的建议都不是理想的解决方案。 在Rails中是否有某种配置我可以更改以使.js成为默认值,但仍然启用CoffeeScript(Asset Pipeline应该仍能.js.coffee我可能编写的.js.coffee文件)?

将application.js重命名为application.js.coffee?

启动一个新项目,我只是尝试将我的application.js重命名为application.js.coffee。 Rails引发错误:SyntaxError:意外的IDENTIFIER(在my_path / application.js.coffee中) Application.js是空的,只是jquery包括: //= require jquery //= require jquery_ujs 有任何想法吗? 谢谢

Rails 3.1 Ajax问题

我有一个名为post的脚手架,它有标题和描述。 在我的布局上,我有一个链接来创建一个新post:remote => true。 当我点击远程链接更改div的内容以便我可以创建新post时,我该如何制作?

在Rails 4中显示所选类别的子类别

1.在我使用的** view / gigs / new.html.erb中 它创造了这个 点击下图时: 根据您选择的类别,从上图中可以看到,只显示该类别拥有的子类别。 2.在我的gig控制器中,我可以编写下面的代码。 def update_sub_categories @cats = Subcategory.where(category_id: params[:category_id]).all respond_with(@cats) end 3.我必须在相同的文件夹视图/ gigs / update_sub_categories中创建一个文件并放入此代码 $(“#gig_subcategory_id”).empty().append(” “subcategory”, :collection => @cats, :as => :cat)) %>”) 也是同一文件夹中的部分视图/ ig / _subcategory.html.erb <option value="”> 4.添加App / javascript / gigs.js.coffee $(document).on ‘change’, ‘#gig_category_id’, (evt) -> $.ajax ‘update_sub_categories’, type: ‘GET’ dataType: ‘script’ data: { […]

Dojo + Rails 3.2.8 + CoffeeScript

我正在尝试在Rails 3.2.8 Web应用程序中使用Dojo Toolkit 1.8而不是JQuery,主要是因为缺少基于JQuery的完整且可视化的统一小部件。 遵循以下步骤: 将dojo,dijit和dojox目录解压缩到app / assets / javascripts中 在application.js //= require_tree .更改//= require_tree . 至//= require_directory . 编辑的应用程序布局(不是不引人注目的……只是为了测试的效果) 视图/布局/ application.html.erb Dojo ‘async: true’ %> require([“dojo/parser”, “dojo/ready”], function(parser, ready) { ready(function() { parser.parse(); }); }); 创建了一个名为home的控制器和一个索引操作的模板 意见/家/ index.html.erb <input type="text" required="true" name="bday" id="bday" data-dojo-type="dijit/form/DateTextBox" value= /> Button 1 好的,Dijit工作得很好! 但是当我尝试在CoffeeScript文件(assets / javascripts / […]

与客户端haml的angularjs

我刚刚开始在我的Rails应用程序中使用AngularJS,因为我习惯在Rails中使用haml模板,我想在客户端使用AngularJS。 问题是我不知道在haml文件中的哪个位置读取。 我有一个投资者的模型,我正在尝试将’show’模板转换为haml,因为它是最容易开始的。 这是我关于show的AngularJS代码 investors.js.coffee # Setup the module & route angular.module(“investor”, [‘investorService’]) .config([‘$routeProvider’, ($provider) -> $provider .when(‘https://stackoverflow.com/investors/:investor_id’, {templateUrl: ‘https://stackoverflow.com/investors/show.html’, controller: ‘InvestorCtrl’}) ]) .config([“$httpProvider”, (provider) -> provider.defaults.headers.common[‘X-CSRF-Token’] = $(‘meta[name=csrf-token]’).attr(‘content’) ]) angular.module(‘investorService’, [‘ngResource’]) .factory(‘Investor’, ($resource) -> return $resource(‘https://stackoverflow.com/investors/:investor_id.json’, {}, { show: {method: ‘GET’}, }) ) angular.bootstrap document, [‘investor’] 这是我的控制器AngularJS代码 investors_controller.js.coffee # Show Investor window.InvestorCtrl = ($scope, […]

ExecJS咖啡脚本没有显示编译错误的行号(Rails资产管道)

在我的一个Rails应用程序中,ExecJS没有显示coffeescript编译错误的行号。 我的编译错误消息将如下所示: ExecJS::RuntimeError in Referrals#new Showing ~/MyApp/app/views/layouts/application.html.erb where line #6 raised: SyntaxError: unexpected IDENTIFIER (in ~/MyApp/assets/javascripts/utils.js.coffee) 请注意,咖啡脚本源没有行号(第6行用于erb文件)。 在我的另一个应用程序中,我仍然在获取行号,语法错误如下所示: ExecJS::ProgramError in Projects#show Showing ~/OtherApp/app/views/layouts/application.html.erb where line #17 raised: Error: Parse error on line 6: Unexpected ‘STRING’ (in ~/OtherApp/app/assets/javascripts/projects.js.coffee) 所以似乎区别在于ExecJS::ProgramError会给我行号,而ExecJS::RuntimeError则不行。 任何人都知道如何获得行号? 为什么我的应用程序在咖啡资产编译上创建RuntimeErrors,而另一个是给出ProgramErrors? 我检查过Rails,它们似乎匹配。 请注意,如果我修复编译错误,应用程序运行正常(例如,咖啡文件实际上已经编译) – 但是让这些行号指向编译错误是很好的! 编辑我意识到,无论是ExecJS Runtimeerror还是ProgramError似乎并不重要 – 在第一个应用程序中,从来没有给Runtimeerror号,而在第二个应用程序中,始终存在。

我应该如何在一个页面上包含coffeescript文件?

编辑:一年后,如果我再次这样做,我会用curl.js代替Rails资产管道。 相关: 在Rails 3应用程序中添加页面特定javascript的最佳方法? 我正在编写一个应用程序,并使用coffeescript生成所有的js。 这就是相关问题不能满足我需要的原因。 我希望能够将coffeescript文件放在我的资源目录的子文件夹中,并且只能在一个页面上提供.coffee文件。 该页面位于命名路由上 match ‘myNotifications’ => ‘user#notifications’ 最明显的事情是将.coffee文件放在assets\javascripts\user\index.js.coffee 。 但在阅读有关资产的文档后,我不清楚。 我读了这一行(来自http://guides.rubyonrails.org/asset_pipeline.html ): 您应该将任何JavaScript或CSS唯一的控件放在各自的资产文件中,因为这些文件可以仅为这些控制器加载,例如或。 好的很酷,所以我将页面特定的js放在assets\javascripts\user.js.coffee 。 然后我重新加载了我的主页,按Ctrl F5。 user.js文件仍在主页上加载。 使用$ -> alert ‘ready from users controller’ ; 加载主页时看到警报。 Rails是否有办法让每页的coffeescript文件只能与该页面一起提供? 我读错了吗? 资产文件夹中是否有一个地方可以放入.coffee文件,它们不会被每个页面加载? 更新 :看起来我可能有一个答案 : 我们有几种方法可以解决这个问题。 我们可以使用require_directory而不是require_tree,因为这只会加载当前目录中的文件而不是子目录中的文件。 如果我们想要更多地控制包含的文件,我们可以单独地要求它们而不是包括整个目录。 或者,我们可以将我们想要包含在所有页面上的JavaScript文件移动到公共子目录中。 然后我们可以使用require_tree ./public来包含那些文件。 我会在上午给出一个镜头。