Tag: coffeescript

Rails,CoffeeScript和ERB

所以我在几个javascript响应者面前搞乱一些动作。 所以,例如, def create #code omitted respond_to do |format| if @post.save format.html { redirect_to discussion_posts_path(@post.discussion), notice: ‘Post was successfully created.’ } format.js else format.html { render :action => “new” } end end end #create.js.erb $(“#discussion_posts_table”).append(“”); $(“#post_body”).val(“”); 现在让我说我想将这些javascript函数转换为Coffeescript(撇开它几乎没有任何收获的事实),如果我将文件更改为create.js.coffee.erb它就会停止工作。 在UJS中使用coffeescript的正确方法是什么? 为了记录,我在我的Gemfile中有coffee-rails ,并在资产管道中使用coffeescript。

Marionette CompositeView为Collection中的每个Model而不是ItemView(Marionette Rails)渲染自己

基本上,我正在尝试将CompositeView渲染为带有表头的简单四列列表,其中集合中的每个模型都呈现为a并附加到。 我跟着Derick的一个例子非常接近,只有一点变化,但不幸的是有一些非常奇怪的结果。 视图不是呈现每个itemView,而是引用自身并为集合中的每个项重新呈现,从而生成新的表和表头。 在此之前,它正在渲染复合视图。 我有一个itemView,其模板是一组项目,以及一个引用它的复合视图,它是一个表 CompositeView: class App.module(‘Views.Parts’).Index extends Backbone.Marionette.CompositeView template: ‘parts/index’ itemView: App.Views.Parts.Part tagName: ‘table’ itemViewContainer: ‘tbody’ appendHtml: (collectionView, itemView, index)-> collectionView.$el.append(itemView.el) ItemView: class App.module(‘Views.Parts’).Part extends Backbone.App.ItemView tagName: ‘tr’ template: ‘parts/part’ events: “click .destroy”: “destroy” destroy: (e) -> e.preventDefault() @model.destroy() onRender: -> @stickIt() 控制器 class App.Controllers.Parts constructor: -> @parts = new App.Collections.Parts @parts.reset(App.parts) App.parts […]

Rails中的共享JS(咖啡)

如果我想在app / assets / javascript下的不同文件之间共享一些JavaScript函数,那么组织目录结构的最佳方法是什么? 假设我有shared.js.coffee sharedFunction = -> ‘Hello ‘ 现在,我如何在其他地方使用它? 就像这里一样,在welcome.js.coffee中 welcome = (name) -> sharedFunction() + name 如何才能首先加载 shared.js.cofee ? 我试着把它放在application.js的最开头,但它没有改变任何东西。 似乎共享文件加载时间太长, 欢迎管理开始执行并注意到未定义sharedFunction。

在coffeescript中获取rails视图辅助方法

我有一个助手,让我们说(为了简单起见) def call_alert return “alert ‘this should appear'” end 然后我有一个coffeescript文件some_test_page.js.coffee ,它呈现一个通过ajax调用的动作。 在some_test_page.js.coffee里面我有: 当我对/ some_test_page进行ajax调用时,我通常希望从coffeescript文件中获取已编译的javascript的响应,并且会发生警报。 但是,似乎无法访问我尝试使用的视图助手。 如果我把一个简单 alert ‘this should appear’ 在我的some_test_page.js.coffee文件中,它工作正常。 我觉得这应该没问题,但也许我正在做一些反常规或愚蠢的事情? 如何在我的coffeescript视图文件中从application_helper.rb获取视图助手?

controller.js.coffee中的函数

我在使用CoffeeScript创建函数时遇到了一些麻烦,我想我错过了一些东西。 对于我的用户控制器,我想为注册表单创建客户端validation。 我想我已经错过了这一切如何运作的基本原则。 {:onsubmit => “return validate_signup_form();”} do |f| %> CoffeeScript( assets / users.js.coffee ): validate_signup_form = () -> alert “Hi” return false 预期产量: var validate_signup_form; validate_signup_form = function() { alert(“Hi”); return false; }; validate_signup_form(); 实际输出: (function() { var validate_signup_form; validate_signup_form = function() { alert(“Hi”); return false; }; }).call(this);

将Rails应用程序部署到Heroku时出现语法错误:ExecJS :: RuntimeError:SyntaxError:意外字符

我正在尝试将我的应用程序部署到Heroku,但它给我这个错误。 “ExecJS :: RuntimeError:SyntaxError:Unexpected character”’(line:14577,col:33,pos:440811” 我认为coffeescript / javascript有问题。 我删除了所有的coffeescript文件,我不知道我做错了什么。 正如Iceman所说,我试过运行命令 rake资产:预编译RAILS_ENV =开发 它说 我,[2017-01-26T16:32:25.173928#2674]信息 – :写作> / Users / Gana / Documents / bombay / bombaydarbar / public / assets / circle-> cb2239e32deac2eba5c693c3574b562595f1f933a8896866e47c170bf87c77e4.pngI,[2017-01-26T16 :32:25.209986#2674]信息 – :写作> / Users / Gana / Documents / bombay / bombaydarbar / public / assets / fb-> e361b3ecca9c24c6c05646b170fe25fcc185fa2eafb7aa46780253c8a9c79a04.png I,[2017-01-26T16:32:25.225079#2674] INFO […]

条带令牌未携带到控制器导轨4

问题 我已经测试了CoffeeScript,并且表单调用Stripe,使用正确的响应令牌设置隐藏字段并提交表单。 我的问题是,一旦提交控制器似乎没有正确获取令牌并抛出此错误: Stripe :: InvalidRequestError – 您必须提供卡或客户ID 。 接下来,我累了拿出生成的令牌并将其硬编码到控制器中,看看是否可行。 我提交了表格,在Stripes结束时收到了付款。 关于接下来要尝试什么,我几乎没有想法。 我想知道我是否遗忘了某些东西或遗漏了某些东西,因为付款是在作业下嵌套的。 gem版本 Ruby:2.1.0 Rails:4.0.1 条纹:1.9.9 档 /payment/new.html.erb prohibited this subscription from being saved: This assignment has already been paid for. JavaScript is not enabled and is required for this form. First enable it in your web browser settings. payment_controller.rb class PaymentsController “Payment received, […]

将HTML返回给AJAX Rails调用

在阅读David Heinemeier Hansson关于服务器生成的javascript的博客文章之后 ,我决定回顾一下我在Rails应用程序中进行AJAX调用的方法。 David建议创建一个.js.erb模板,它只是嵌入了服务器上生成的ruby代码的javascript,而不是在客户端javascript中进行任何DOM操作。 另一种方法当然是简单地在客户端执行所有操作,并且(例如)从服务器返回表示更新对象的JSON对象,并使用javascript来执行所有DOM操作。 我不喜欢第一种方法有两个原因: 1)我在我的应用程序中使用HAML和Coffeescript,并且觉得通过使用vanilla javascript和ERB会不断地使用不同语言的代码膨胀我的代码库(也许可以创建.coffee.haml模板而不是js.erb,我不知道) 2)我真的不喜欢“乱丢”我的视图文件夹的想法,主要是javascript文件,嵌入了一点ruby。 正如大卫在他的博客文章中谈到的那样,第二种方法非常依赖于客户端javascript,这可能导致客户端javascript代码膨胀,并且可能需要客户端模板,这在最坏的情况下可能意味着几乎是模板数量的两倍。 我决定采用的方法(并且想要询问是否完全是愚蠢的方式)如下: 1)设置remote: true标志,使链接和表单利用AJAX发布到服务器。 2)在我的控制器中,处理所有内容为html,如果请求是AJAX请求,则只需渲染而不进行布局: render partial: ”, layout: false if request.xhr? 。 这只是返回partial的HTML,并评估ruby代码。 3)在资产javascript文件中(例如.js.coffee ),听取ajax:success并从响应中追加HTML。 我喜欢这种方法,因为(在我相当简单的应用程序中)这允许我将所有代码保存在HAML / Coffeescript中,并避免使用任何javascript模板。 我意识到如果应用程序的复杂性增加,这个问题可能会有不同的特性,但我仍然觉得这是一个有效的问题:这是一个不好的方法来为Rails应用程序实现基于AJAX的架构(如果是这样的话) ,为什么?即有什么理由为什么从AJAX调用返回HTML而不是JSON是一个坏主意?)或者这是我应该继续使用的东西? 谢谢 :-)

CoffeeScript – 无与伦比的外观

我一直在尝试将我的工作javascript代码传递给CoffeeScript,但我无法传递此错误: 55号线无与伦比的OUTDENT 这是coffeescript代码 $(document).on(“click”,”.save_button”, -> $form = $(this).parent().parent().parent().parent().parent().parent() $form.bind(“ajax:complete”, -> $actionURI = $form.attr(“action”); $.get(window.location.protocol+”//”+window.location.host+$actionURI+”.js”,(data) -> $form.parent().parent().prev().html(data); //Line 55 closeSaveElement() ,”html”) ); $form.submit(); return false; ); 我试过放和擦除; 到处都是,但我没有错。 我也尝试更改-> for =>但弹出相同的错误。

Rails 4 + ReactJS:“SyntaxError:隐式对象中不能有隐式值”

我关注的是Fernando Villalobos的React.js – Rails开发人员 AirPair教程的指南。 这里的目标是使用Rails和React JS构建一个简单的费用跟踪应用程序。 在嵌套组件:列表记录部分中,作者建议创建app/views/records/index.html.erb文件,如下所示: 和javascripts/components/records.js.coffee文件如下: # app/assets/javascripts/components/records.js.coffee @Records = React.createClass render: -> React.DOM.div className: ‘records’ React.DOM.h2 className: ‘title’ ‘Records’ 然后,当我们访问localhost:3000/records ,我们应该看到以下内容: 但是,当我访问localhost:3000/records ,我收到以下错误: ExecJS::RuntimeError in Records#index SyntaxError: [stdin]:7:10: cannot have an implicit value in an implicit object Expenses true %> true %> 特别是,引起问题的线似乎是: true %> 知道问题是什么以及我如何使事情发挥作用?