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

vsikbqxv  于 2022-11-03  发布在  jQuery
关注(0)|答案(3)|浏览(144)

我是新的铁路和Ruby,我刚刚开始像一个星期前。
我正在尝试在rails上做两个人之间的聊天,用jquery来做 AJAX 部分。
一切正常,但我遇到了这个错误,我不明白,它真的困扰我
图像错误(无法将其包含在图像应答器中)https://ibb.co/KKjKLPf
VM 17: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 %>

我试着找到一个解决方案,但我仍然卡住了,所以我把它贴在这里,我想让这个工作,但没有这个错误。我该怎么办?改变我 AJAX 请求与CoffeeScript之一?还没有学会CoffeeScript:/
编辑:
你好,我不知道为什么,但删除application.js中的东西使技巧

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

我只是对require(“@rails/ujs”).start()做了一个注解,错误不再出现,代码仍然工作:/ weard

pkbketx9

pkbketx91#

我猜在你的application.js文件里

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

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

rsaldnfx

rsaldnfx2#

正如错误所述,您导入了两个相同用途的库,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的行上方)。

ia2d9nvy

ia2d9nvy3#

我想补充的是,如果我将rails-ujs与jquery-rails一起使用,我的$. AJAX 调用只有在我沿着真实性令牌时才能工作!

$.ajax({data: {authenticity_token: $('[name="csrf-token"]')[0].content}});

而且很明显不管还有什么东西被发送出去...

相关问题