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



所以我使用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页面的底部,然后当按下按钮时它就会触发。

对于初学者来说,您应该小心,因为生产中的行为可能不是您想要的。如果你的JS都被缩小了(应该是这样),那么你要么会在只提供这一个文件时遇到问题,因为它不会在资产管道中,要么你会在任何地方都包含它。

除此之外,你所做的并没有什么根本性的错误。您可以考虑将googlesheet.js放在/vendor文件夹中,而不是/app,因为您在网上找到了它。

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

"适当"的解决方案

您可以将googlesheets.js包含在资产管道中,这将使它可用于当前拥有的代码。

config/environments/production.rb:中

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

请参阅导轨指南:http://guides.rubyonrails.org/asset_pipeline.html#precompiling-资产

快速且肮脏的解决方案

如果你正在寻找一种快速而肮脏的方法来做到这一点,一种方法是将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] %>

最新更新