我有一个谷歌地图的Rails应用程序。我想用一个.js.erb文件用标记填充它,这样我就可以访问javascript中的ruby变量了。我不想用龙珠。
有没有办法让操作调用.js.erb文件而不是.html.erb文件?
一种解决方法是加载.html.erb,然后进行自动ajax调用来加载.js.erb,但我正在寻找更好的解决方案。
谢谢。
发布于 2014-04-24 08:53:08
控制器确实不是正确的方式,因为它的工作是响应请求。如果一个请求进入并希望返回HTML,Rails将返回HTML。如果是JS请求,它会将JS发回。
正确的方法是使用HTML加载页面,然后从页面执行AJAX调用。您甚至可以将其发送到相同的操作,Rails将使用适当的js.erb模板进行响应。如果你想给它特殊的指令,也许如果你想以一种特定的方式呈现你的JSON,你可以用respond_to或者JBuilder gem来实现。
编辑:上面的代码是基于这样的假设编写的:您通过一个普通的HTML请求加载页面,并且您希望它同时执行HTML和JS。如果您已经在页面上,并且希望通过链接、按钮或表单执行AJAX调用,而不想呈现HTML,则可以通过向任何form_for、form_tag、button_to或link_to标记添加remote: true来实现。
发布于 2014-04-26 02:16:25
如果您希望避免第二次调用,并且不希望您的控制器需要使用JSON进行响应,那么您可以将正在查找的数据放入视图中的HTML5数据属性中。它们是专门为JS提供信息而存在的。您只需将其值设置为包含您的标记的数组,然后让脚本运行该数组的每个元素。
https://stackoverflow.com/questions/23257642
复制相似问题