ruby-on-rails-3.1 - 无法在 coffeescript 中呈现部分 coffeescript

标签 ruby-on-rails-3.1 rendering coffeescript partials

我想制作一个可以在页面加载后调用的通用 Controller (使用 AJAX),并根据调用它的 Controller 更新页面上的不同内容。

目的是允许更好的页面和片段缓存,同时为用户显示自定义元素。

我的框架是这样的:

controllers/general_ajax_controller.rb
views/general_ajax/on_page_load.js.coffee
                 ./_update_some_stuff.js.coffee

Controller 中的 on_page_load 操作处理确定要加载哪些分部以及 View 将呈现分部的逻辑。

on_page_load.js.coffee View 中我有这段代码(简化):

<%= render "update_some_stuff" %>

应该渲染部分。相反,我收到此错误:

  ActionView::Template::Error (SyntaxError: Reserved word "function" on line 2):
  app/views/general_ajax/on_page_load.js.coffee:1:in `_app_views_general_ajax_on_page_load_js_coffee___2304196970850216490_70321203283120'

我认为coffeescript是在将它包含在 View 中之前编译的(这是coffee并且不支持编译的js)

如果我将 on_page_load View 的扩展名更改为 .js.erb,那么它可以工作。 (奇怪的是,我必须重新启动我的服务器才能工作,你知道为什么吗?)

您认为这是 coffeescript 中的一个问题还是它是一种不好的做法因此不受支持?

作为附带讨论,您如何看待我的动态脚本方法?

最佳答案

一种解决方案是将原始解析的 javascript 嵌入到 View 中。

注意反引号(它告诉 coffeescript 这是原始 javascript)并使用 raw() 撤消渲染部分的 HTML 转义。

`
<%= raw(render("update_some_stuff")) %>
`

关于ruby-on-rails-3.1 - 无法在 coffeescript 中呈现部分 coffeescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8405398/

相关文章:

ruby-on-rails-3.1 - 用于 Clearfix 的 Sass/SCSS Mixin - 最佳方法?

ruby-on-rails - Rails 3.1 ckeditor

ruby-on-rails - 设计路由错误 : No route matches [GET] "/users/sign_out"

java - 使用 Cairo 渲染到 SWING 表面(例如 JPanel)

ruby-on-rails - 如何在 Devise 中填充一些默认用户?

jquery - 浏览器未观察到 data-* 的更改,CSS 属性选择器属性未呈现

javascript - Canvas 文本渲染(模糊)

testing - 设置 webpack、coffeescript、mocha 的工作示例或教程?

javascript - jquery 验证插件,条件远程调用未按预期工作

javascript - 想要获取的不是延迟对象而是数组