我有谷歌地图的Rails应用程序。我想使用.js.erb文件用标记填充它,以便我可以访问javascript中的ruby变量。我不想使用gon gem。
有没有办法让动作调用.js.erb文件而不是.html.erb文件?
解决这个问题的一种方法是加载.html.erb,然后必须执行自动ajax调用来加载.js.erb,但我正在寻找更好的解决方案。
感谢。
答案 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_to
或link_to
标记。
答案 1 :(得分:0)
如果您想避免第二次调用并且不希望控制器需要使用JSON进行响应,则可以将您正在查找的数据放入视图中的HTML5数据属性中。这些专门用于向JS提供信息。您只需将其值设置为包含标记的数组,然后让脚本遍历该数组的每个元素。