繁体   English   中英

respond_to 做 |格式| format.js 在 Rails 6.1.3 中不起作用

[英]respond_to do |format| format.js not working in rails 6.1.3

应用程序.js

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


require("bootstrap");
require("jquery");
require('popper.js');
require("channels/jquery.nice-select.min.js");
require("channels/owl.carousel.min.js");

require("@fortawesome/fontawesome-free");

联系人控制器.rb

class ContactsController < ApplicationController

  def index
    @contact = Contact.new
  end

  def create
    @contact = Contact.new(contact_params)

     respond_to do |format|
  
     if @contact.save
       ContactMailer.with(contact: @contact).notification.deliver_now
        format.html {redirect_to contacts_path}
        format.js {  }
    
     else 
      format.html {render :index}
      format.json {render json: @contact.errors, status: :unprocessable_entity}
    end
  end
end

private ##

 def contact_params
   params.require(:contact).permit(:name, :phone_number, :message, :email)
 end
end

因为我想尝试看看 format.js 是否会运行所以它只有 1 行

创建.js.erb

console.log('sending alert;');

索引.html.haml

.main_contact_inner 
  = form_for @contact , url: contacts_path do |f|
    - if @contact.errors.any?
      %ul 
        - @contact.errors.full_messages.each do |msg|
          %li= msg 
    #contactForm.row.contact_form
      .form-group.col-md-4
        = f.text_field :name, class: 'form-control', placeholder: 'Tên' 
      .form-group.col-md-4
        = f.text_field :phone_number, class: 'form-control', placeholder: 'Số Điện Thoại'
      .form-group.col-md-4
        = f.text_field :email, class: 'form-control', placeholder: 'Email'
      .form-group.col-md-12
        = f.text_area :message, class: 'form-control', placeholder: 'Tin nhắn', rows: 1
      .form-group.col-md-12
        %button.btn.submit_btn.red.form-control{:type => "submit", :value => "submit"} Gửi đi

创建联系人后,控制台上不会显示任何日志。

我不知道为什么我的代码不能将 go 转换为 format.js,有人可以帮我解决这个问题吗?

或者有人可以告诉我如何在不使用 controller 的情况下创建像 sweetalert2 这样的警报。

我认为您缺少remote: true

= form_for @contact , url: contacts_path, remote: true do |f|

从文档中

:remote - 如果设置为 true,将允许 Unobtrusive Javascript 驱动程序控制提交行为

这就是将 js header 添加到请求中并允许 rails controller 以 js 格式响应的原因。

从导轨指南

<%= form_with(model: @article, id: "new-article", local: false) 做 |form| %>

<% 结束 %>

添加本地:false

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM