Rails:在一个请求中呈现html和js

时间:2012-05-14 21:12:17

标签: javascript ruby-on-rails

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

目前,它只是呈现html。添加带有html和js的respond_to块只会呈现html。

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

1 个答案:

答案 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>