当用户访问我的网站时,我想要同时呈现index.html.haml以及index.js.haml。 (我试图让我的JS脱离视图。)
目前,它只是呈现html。添加带有html和js的respond_to
块只会呈现html。
我该怎么做?有没有更好的办法?我不想在/ assets / js中包含JS,因为ruby在JS中执行。
答案 0 :(得分:4)
rails控制器操作一次只能响应一个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>