调用.js.erb文件而不是.html.erb

时间:2014-04-24 00:25:38

标签: javascript ruby-on-rails google-maps ruby-on-rails-4 erb

我有谷歌地图的Rails应用程序。我想使用.js.erb文件用标记填充它,以便我可以访问javascript中的ruby变量。我不想使用gon gem。

有没有办法让动作调用.js.erb文件而不是.html.erb文件?

解决这个问题的一种方法是加载.html.erb,然后必须执行自动ajax调用来加载.js.erb,但我正在寻找更好的解决方案。

感谢。

2 个答案:

答案 0 :(得分:0)

控制器确实不是正确的方法,因为它的工作是响应请求。如果一个请求进来并希望得到HTML,Rails将返回HTML。如果它是JS请求,则会返回JS。

执行此操作的正确方法是使用HTML加载页面,然后从页面执行AJAX调用。您甚至可以将其发送到相同的操作,Rails将使用相应的js.erb模板进行响应。如果你想给它特别的指示,也许你想要以特定的方式呈现你的JSON,你可以用respond_to或JBuilder gem来做。

编辑:上面的内容是假设您正在通过普通的HTML请求加载页面,并且您希望它同时执行HTML和JS。如果您已经在页面上并希望通过链接,按钮或表单进行AJAX调用而根本不渲染HTML,则可以通过将remote: true添加到任何form_for form_tag来实现。 1}},button_tolink_to标记。

答案 1 :(得分:0)

如果您想避免第二次调用并且不希望控制器需要使用JSON进行响应,则可以将您正在查找的数据放入视图中的HTML5数据属性中。这些专门用于向JS提供信息。您只需将其值设置为包含标记的数组,然后让脚本遍历该数组的每个元素。