我想制作一个可以在页面加载后调用的通用 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/