簡體   English   中英

js.erb渲染文本而不是JS

[英]js.erb is rendering text not JS

嘗試通過軌道中的AJAX更新搜索結果的奇怪問題是將js.erb加載到頁面上原始文本的<pre>標記中,而不是在該文件中觸發任何js。

在索引控制器中

if request.format.js?
    respond_to do |format|
      format.js { render layout: false }
    end
  end

表單設置為使用remote激活AJAX:true

    = form_tag(search_path, id: "form", remote: true, :'data-type' => 'script') do

index.je.erb

alert('hello');
$("#results").innerHTML("<%= escape_javascript(render partial: 'results', locals: { results: @results } ) %>"); 

的routes.rb

  match 'search', to:  'properties#index', via: :post, defaults: { format: 'js' }

在路由中,我試圖從表單強制js,因為之前它是JSON,但沒有任何區別。 從日志中,控制器正在接收js請求,但我在CHrome調試器中得到了這個:

(index):69 Resource interpreted as Document but transferred with MIME type text/javascript: "http://localhost:3000/search".

堅持一個alert("Js is working")沒有問題,所以JS在那里並且開火

我陷入了困境,這應該是現在的工作,它是我錯過了什么傻,或者Rails 5中我不知道的新東西?

如果我可以提供更多信息來幫助你打擾我,請問問!

提前致謝

好吧。 似乎'遙遠:真實'是不夠的! 它似乎確實將ajax請求提交給控制器,但控制器確定它是文本。

加入

jQuery ->
  $('#form').on "change", ->
    $.ajax '/properties/index',
    type: 'GET'
    dataType: 'script'
    data: $('form').serialize()

並將表單提交到純粹的ajax似乎解決了這一切!

暫無
暫無

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

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