小编Ric*_*ael的帖子

如何在 webpacker Rails 6 中使 JS 函数全局化

我尝试像以前在 Rails 5 中所做的那样组织我的前端。我有一些带有函数的 js 文件,并根据我的需要在不同的代码位置使用了这些函数。但是在 Rails 6 中使用 js 是完全不同的。不管怎样,我想我对包和 webpacker 有了主要的了解。但是如何使用自定义js函数呢?将其写入一个文件并在另一个文件中使用?应该有办法做到这一点。

例如,我有一些自定义的 js 包:

app/javascript/packs/custom_pack_with_functions.coffee

console.log 'hey'

@hi = () ->
  console.log 'HI'
Run Code Online (Sandbox Code Playgroud)

我希望该hi功能在我看来是可用的。

some_view.html.slim

= javascript_pack_tag 'custom_pack_with_functions'

javascript:
  hi()
Run Code Online (Sandbox Code Playgroud)

但是当我来到适当的页面时,我在控制台中只看到以下消息:

hey
ReferenceError: hi is not defined
Run Code Online (Sandbox Code Playgroud)

? 如何定义hi函数以从任何地方使用它?

javascript webpacker ruby-on-rails-6

2
推荐指数
1
解决办法
1031
查看次数

Rails UJS link_to:remote执行AJAX GET和普通的<a href> GET

编辑:

除了下面的有用评论之外,史蒂夫施瓦茨的两篇优秀文章清楚地解释了一切:

Rails 3.2.2/jquery-rails 2.0.1 (使用jquery 1.7.1)

我有链接发送AJAX请求以向表单添加其他文件上载字段. 与页面相关的所有内容都能正常工作 - 从服务器检索新的表单字段HTML片段并将其附加到表单内的div.

然而,

服务器收到两个GET请求.一个是AJAX请求; 另一个似乎是"正常"锚元素GET.我预计Rails UJS会阻止"正常"的GET.

我应该自己禁用正常的链接操作吗?有人可以解释一下我误解了什么,以及我应该做些什么[防止第二次请求]?

我已经看到了这个问题:Rails 3 UJS - 控制器被link_to调用两次:remote.因此,我尝试更改资产管道编译config.assets.debug = false,但它没有任何效果.而且,这不是双AJAX GET请求,所以我认为这是一个不同的问题.

谢谢你的帮助!

服务器日志片段:

Started GET "/files/new?asset_number=2" for 127.0.0.1 at 2012-03-23 15:23:27 +0100

Started GET "/files/new" for 127.0.0.1 at 2012-03-23 15:23:27 +0100
Run Code Online (Sandbox Code Playgroud)

浏览器HTML:

<a href="/files/new" data-remote="true" id="add_another_file" position="after" update="files">Add another file</a>
Run Code Online (Sandbox Code Playgroud)

视图:

<%= link_to 'Add another file', new_file_path, :remote   => true,
                                               :update   => 'files',
                                               :position => 'after',
                                               :id       => 'add_another_file' %>
Run Code Online (Sandbox Code Playgroud)

控制者的咖啡因: …

jquery ruby-on-rails ujs

1
推荐指数
2
解决办法
4372
查看次数