当用户访问我的站点时,我想同时呈现 index.html.haml 和 index.js.haml。(我正试图让我的 JS 离开视图。)
目前,它只呈现 html。当然,添加一个respond_to
同时包含 html 和 js 的块只会呈现 html。
我该怎么做呢?有没有更好的办法?我不想在 /assets/js 中包含 JS,因为 ruby 在 JS 中执行。
当用户访问我的站点时,我想同时呈现 index.html.haml 和 index.js.haml。(我正试图让我的 JS 离开视图。)
目前,它只呈现 html。当然,添加一个respond_to
同时包含 html 和 js 的块只会呈现 html。
我该怎么做呢?有没有更好的办法?我不想在 /assets/js 中包含 JS,因为 ruby 在 JS 中执行。
Rails 控制器操作一次只能响应一个 HTTP 请求,即使它可以响应多个 HTTP 请求,也会从 HTML 请求 JS,但初始请求会以任何方式发出(因此它是一个单独的请求)。
如果您想将 Javascript 保存在另一个文件中以清楚起见,您可以创建一个部分并以这种方式加载它。
在响应控制器操作的视图中,@my_var 传递给部分(./views/mycontroller/my_action.html.erb):
<%= render 'my_action_js', :my_var => @my_var %>
和部分(./views/mycontroller/_my_action_js.html.erb)
<script type="text/javascript">
alert(<%= my_var %>);
</script>