1

当用户访问我的站点时,我想同时呈现 index.html.haml 和 index.js.haml。(我正试图让我的 JS 离开视图。)

目前,它只呈现 html。当然,添加一个respond_to同时包含 html 和 js 的块只会呈现 html。

我该怎么做呢?有没有更好的办法?我不想在 /assets/js 中包含 JS,因为 ruby​​ 在 JS 中执行。

4

1 回答 1

4

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>
于 2012-05-14T23:26:35.273 回答