运行javascript inconjunction提交创建新记录的请求

时间:2017-02-13 12:24:21

标签: javascript ruby-on-rails ajax controller

所以我使用rails来做到这一点。 我有一个带有表单的页面和一个提交按钮,它为我的数据库创建一个新记录,然后将页面重定向到一个感谢页面。这是通过控制器完成的。

然而,我有这个javascript,当按下提交按钮时触发,然后更新我的谷歌电子表格。这基本上就是这个脚本, [http://railsrescue.com/blog/2015-05-28-step-by-step-setup-to-send-form-data-to-google-sheets/][1]

但是,这样做会导致很多问题发生,我现在不想详细介绍。 所以更好,我想问一下,你怎么建议我把这个javascript添加到我的网页?截至目前,我只是推了这条线

  <%= javascript_include_tag 'googlesheet' %>

位于html页面的底部,然后只是在按下按钮时触发。

1 个答案:

答案 0 :(得分:1)

对于初学者,你应该小心,因为生产中的行为可能不是你正在寻找的。如果你的JS全部缩小(应该是这样),那么你要么只是服务这个文件就会遇到麻烦,因为它不会进入资产管道,或者你包括无论如何它到处都是。

除此之外,你所做的事情并没有根本错误。您可以考虑将googlesheet.js放在/vendor文件夹而不是/app,因为您是在线找到的。

除了下面列出的内容之外,有一些方法可以做到这一点,但它们并不是特别有用或不好。

&#34;适当&#34;溶液

您可以在资产管道中加入googlesheets.js,这将使您可以使用当前的代码。

config/environments/production.rb

config.assets.precompile += ['googlesheets.js']

请参阅Rails指南:http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets

快速而肮脏的解决方案

如果您正在寻找快速而肮脏的方法来实现这一目标,那么一种方法是将JS放入视图中,然后将其包含在您需要的位置。它看起来像这样:

/app/views/javascript/_googlesheet.js.erb

<script>
  // ... the existing code in your "googlesheet.js" file
</script>

然后在您的主视图中(您当前正在调用<%= javascript_include_tag 'googlesheet' %>):

<%= raw render partial: 'javascripts/googlesheet', handlers: [:erb, :coffee], formats: [:js] %>