当用户访问我的网站时,我想同时呈现 index.html.haml 和 index.js.haml。 (我试图让我的 JS 脱离 View 。)
目前,它只呈现 html。添加一个包含 html 和 js 的 respond_to
block 当然只会呈现 html。
我该怎么做?有没有更好的办法?我不想将 JS 包含在/assets/js 中,因为 ruby 在 JS 中执行。
最佳答案
一个 Rails Controller 操作一次只能响应一个 HTTP 请求,即使它可以响应多个 JS 从 HTML 请求初始请求以任何方式发出(因此它是一个单独的请求)。
如果为了清晰起见,您希望将 Javascript 保存在另一个文件中,您可以创建一个部分文件并以这种方式加载它。
在用@my_var 传递给部分(./views/mycontroller/my_action.html.erb)响应 Controller Action 的 View 中:
<%= render 'my_action_js', :my_var => @my_var %>
和部分(./views/mycontroller/_my_action_js.html.erb)
<script type="text/javascript">
alert(<%= my_var %>);
</script>
关于javascript - rails : rendering html and js in one request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10591138/