簡體   English   中英

Respond_to js 返回 html 頁面的一部分以及 JavaScript 而不是 js.erb 文件

[英]Respond_to js returns a part of the html page along with the JavaScript instead of js.erb file

我正在嘗試重寫表單以顯示為模態表單。 為此,我使用了 popper 和 bootstrap lib,它們都包含在項目中並且可以正常工作。 但是我沒有成功,總是出現同樣的錯誤:

VM44399:1 Uncaught SyntaxError: Unexpected token '<'
    at DOMEval (jquery3.self-74ad.js?body=1:112)
    at Function.globalEval (jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:346)
    at text script (jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:9641)
    at ajaxConvert (jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:8788)
    at done (jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:9256)
    at XMLHttpRequest.<anonymous> (jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:9549)

我的 js 庫:

// app/assets/javascripts/application.js 
 
/* External libraries */
//= require jquery3
//= require jquery_ujs
//= require popper
//= require bootstrap

在 controller 我使用 respond_to 返回我的 js 文件:

 
def new
   respond_to do |f|
      f.js
   end
end

添加到index.slim模態類並將鏈接更改為 remote=true:

= link_to new_article_path, { remote: true,
                              'data-toggle' =>  "modal",
                              'data-target' => '#modal-window',
                              class: 'btn btn-outline-success' }
#modal-window.modal.fade[role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"]
   .modal-dialog.text-left[role="document"]
      .modal-content

將 new.slim 重命名為_new.slim並向它們添加模態類:

# ArticlesController

.card.modal-header
  .card-body.w-100
    h5.card-header New Article
    = render 'form'

使用 js 創建new.js.erb ,添加並調用模態 window:

$("#modal-window").find(".modal-content").html("<%= j (render 'new') %>");
$("#modal-window").modal();

結果,我仍然得到一些難以理解的 html 的一部分,其中有一堆腳本標簽,如<script src="/assets/jquery-ui/據我所知,這只是整個應用程序頁面的一部分,其中有使用 new.js.erb 的代碼只是以代碼的形式。

這里可能是什么問題?

感謝您的回答!

可能在 controller 中遵循更多的導軌約定:

def new
  @article = Article.new
end

def create
  @article = Article.create!(article_params)

  respond_to do |format|
    format.js
  end
end

該問題通過在 format.js 或 respond_to 方法之前添加render layout: false來解決:

def new
   respond_to do |format|
     format.js { render layout: false }
   end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM