Rails:在一个请求中渲染 html 和 js

Rails: rendering html and js in one request

本文关键字:html js 请求 一个 Rails      更新时间:2023-09-26

当用户访问我的网站时,我想同时呈现index.html.haml以及index.js.haml。(我试图让我的JS退出视图。

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

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

一个 rails 控制器操作一次只能响应一个 HTTP 请求,即使它可以响应多个 JS 是从 HTML 请求的,初始请求会以任何方式发出(所以它是一个单独的请求)。

如果你想把你的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>