无法在coffeescript内部渲染coffeescript

Cri*_*ian 2 rendering partials coffeescript ruby-on-rails-3.1

我想创建一个可以在加载页面后使用AJAX调用的通用控制器,并根据控制它的控制器更新页面上的不同内容.

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

我的框架看起来像这样:

controllers/general_ajax_controller.rb
views/general_ajax/on_page_load.js.coffee
                 ./_update_some_stuff.js.coffee
Run Code Online (Sandbox Code Playgroud)

on_page_load控制器中的操作处理逻辑,确定要加载哪些部分,视图将呈现部分.

on_page_load.js.coffee视图中我有这个代码(简化):

<%= render "update_some_stuff" %>
Run Code Online (Sandbox Code Playgroud)

哪个应该呈现部分.相反,我得到这个错误:

  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'
Run Code Online (Sandbox Code Playgroud)

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

如果我将on_page_load视图的扩展名更改为.js.erb然后它可以工作.(奇怪的是,我必须在它运行之前重启我的服务器,你知道为什么吗?)

你认为这是coffeescript中的问题还是不好的做法,因此不受支持?

作为一个侧面讨论,您如何看待我的动态编程方法?

kig*_*ter 5

一种解决方案是将原始解析的javascript嵌入到视图中.

注意后面的滴答声(它告诉coffeescript这是原始的javascript)并使用raw()来撤消HTML渲染部分的转义.

`
<%= raw(render("update_some_stuff")) %>
`
Run Code Online (Sandbox Code Playgroud)