jquery_ujs 和 rails-ujs 问题 ajax 页面的问题

Posted

技术标签:

【中文标题】jquery_ujs 和 rails-ujs 问题 ajax 页面的问题【英文标题】:probleme with jquery_ujs and rails-ujs problem ajax page 【发布时间】:2020-07-18 21:27:43 【问题描述】:

我是 rails 和 ruby​​ 的新手,我是 1 周前才开始的。

我正在尝试在 Rails 上的两个人之间进行聊天,其中 jquery 用于 ajax 部分。

一切正常,但我遇到了这个我不明白的错误,真的很困扰我

错误的图像(无法将其包含在图像应答器中) https://ibb.co/KKjKLPf

VM17:2082 未捕获错误:如果同时加载 jquery_ujs 和 rails-ujs,请仅使用 rails-ujs。

我了解我同时使用 jquery_ujs 和 rails-ujs,而 rails 希望我只使用 rails-ujs。

我的主页 (index.hmtl.erb) 有这个代码

<h1>welcome to the chat  </h1>
<div id='conv'>
    <div id='message'>
    </div>
    <div id='sendmsg'>
    <%= form_tag "/", method: "post" do %>
        <input type='hidden' name='name' value='phil'/>
        <input id='tex' type="text" name="message" />
        <input id='sen' type="submit" value="send" />
    <% end %>
</div>
</div>

我的javascript是这样的

window.addEventListener('load', function () 
    setInterval(refreshMessage,3000);
    function refreshMessage()
        $.ajax(
            type: 'GET',
            url: '/chatBoard',
            success: function(data)
                $('#message').html(data);
            ,
            error : function()
                $('#message').html('error');
             
        )
    ;
);

这个 ajax 向服务器发送一个 GET 到 '/chatBoard',它会用这个脚本返回数据库中的所有消息。

<% @messages.each do |message| %>
<%= message.name %> :
<%= message.message %>
<% end %>

我试图找到一个解决方案,但我仍然卡住了,所以我把它贴在这里,我想做这个工作,但没有这个错误。 我该怎么办?用 CoffeeScript 更改我的 ajax 请求?还没学过 CoffeeScript:/

编辑:

你好,我不知道为什么,但是在 application.js 中删除一些东西就可以了

// require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("custom")

我刚刚对 require("@rails/ujs").start() 做了评论,错误不再出现,代码仍然有效:/磨损

【问题讨论】:

【参考方案1】:

我的猜测是在你的application.js 文件中,你有

//= require rails-ujs
//= require jquery_ujs

如果您删除 //= require jquery_ujs,错误应该会消失。

【讨论】:

你好,谢谢你的回答 :D 但我只在 application.js require("@rails/ujs").start(). require("turbolinks").start(). require("@rails/activestorage").start(). require("channels"). require("custom") 对不起格式。我找不到如何在代码 backstick 中换行 感谢我评论 rails/ujs 并且它可以工作,不知道为什么:D【参考方案2】:

正如错误所说,您正在导入两个库用于同一目的,jquery-ujsrails-ujs。因此,根据您使用的 Rails 版本,您只需要保留一个。如果您的版本是 5.0 或之前的版本,您需要使用 jquery-ujs,但如果您使用的是 Rails 5.1 及更高版本,则需要使用 rails-ujs。此外,如果您需要对 jQuery 的支持,正如您在评论中提到的,您需要在您的Gemfile 中添加jquery-rails gem,在控制台中运行bundle install,并在application.js 添加//= require jquery(在您导入 jquery-ujsrails-ujs 的行上方)。

【讨论】:

以上是关于jquery_ujs 和 rails-ujs 问题 ajax 页面的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在禁用管道中包含“jquery_ujs”以便能够对表单使用“remote:true”?

Rails 5.1 中是不是还需要`require jquery_ujs`?

rails :: 如何评估 js 响应

用 ajax:beforeSend 修改后继续执行 ajax 请求

jQuery插件不起作用……“类型错误:'undefined'不是一个函数”

最大子段和问题,最大子矩阵和问题,最大m子段和问题