簡體   English   中英

Ruby on Rails-AJAX問題(ActionController:UnknownFormat)

[英]Ruby on Rails - Issues with AJAX (ActionController:UnknownFormat)

我是Ruby on Rails的初學者,所以如果問題很明顯,我深表歉意。 我目前正在從事一個名為Gradebook的項目。 在Gradebook的一頁上,我一直在研究一種功能,用戶可以單擊“新建類別”,並且將在div中呈現一個表單,該表單將允許用戶輸入有關類別的信息,然后保存更改后,類別將顯示在屏幕上。 所有這些都將使用AJAX發生。

這是我的思考過程:

  1. 我向視圖添加一個提交按鈕,該按鈕將觸發類別控制器上的“新”操作。 我使用remote:true,因此頁面不會重定向到/ category / new。 我在將要呈現類別表單的表單底部創建一個div。

     ... <%= form_for :category, url: new_gradebook_category_path, remote: true do |f| %> <%= f.submit 'New Category' %> <% end %> ... <div id="category_form"></div> 
  2. 在類別控制器中,我創建一個新類別並指定我只想產生一個javascript響應:

     def new @category = Category.new respond_to do |format| format.js end end 
  3. 我在類別文件夾中創建“ new.js.erb”,該文件夾將負責在div中呈現我的類別表單:

     $('#category_form').html("<%= j (render 'newcategory') %>"); 
  4. 我創建了_newcategory.html.erb,它是實際的形式:

     <%= form_for :category, url: gradebook_category_index_path, remote: true do |f| %> <p> <%= f.label :category_name, "Category Name"%><br> <%= f.text_field :category_name %> </p> <p> <%= f.label :category_description, "Category Description"%><br> <%= f.text_area :category_description %> </p> <p> <%= f.submit, "Create Category" %> </p> <% end %> 

我的問題是,當用戶單擊“新建類別”按鈕時,什么也沒有發生。 我查看了Javascript控制台,發現找不到“ new.js.erb”:

在此處輸入圖片說明在此處輸入圖片說明

當我在新選項卡中打開此鏈接時,我得到了ActionController:UnknownFormat:

在此處輸入圖片說明

這是我嘗試過的所有方法:

  1. 我嘗試更改:

      respond_to do |format| format.js end 

    對此:

      respond_to do |format| format.html format.js end 

    我已經讀過使用“ format.js”作為唯一響應會產生此錯誤。 但是,這只是給我“缺少模板類別/新”。 盡管我不必指定new.html.erb,但因為我希望它是AJAX響應,所以我希望它保留在同一頁面上。

  2. 我曾嘗試刪除tmp文件夾,但這沒有用。

  3. 我使用“ File.exists?”檢查文件是否存在,它們確實存在。

  4. 我檢查以確保服務器沒有將其解釋為HTML,並根據服務器輸出:

      Started POST "/gradebook/2/category/new" for 127.0.0.1 at 2014-10-16 16:43:02 -0700 Processing by ApplicationController#routing_error as JS Parameters: {"utf8"=>"✓", "commit"=>"New Category", "path"=>"gradebook/2/category/new"} Rendered public/404.html (0.1ms) Completed 404 Not Found in 12ms (Views: 11.3ms | ActiveRecord: 0.0ms) 

    它被解釋為Javascript文件,但是確實顯示“ ApplicationController#routing_error”,但是我無法理解此路由錯誤發生的位置。

    1. 我檢查以確保啟用了JQuery(因為JS文件使用JQuery)並且已啟用。

在這一點上,我不確定是什么問題。 我覺得這個問題非常明顯,但是Rails服務器的行為就像是javascript文件都不存在。 任何幫助將非常感激。 非常感謝。

是的,這是因為如果您在屏幕快照中查看,您會看到這是動作POST( form_for自動使用POST方法),但是rails處理帶有“新”(如GET)的請求。 如果您輸入rake routesbundle exec rake routes您將發現您的操作為GET。 您可以直接在表單中將其設置為操作GET而不是POST:

form_for :category, url: new_gradebook_category_path, method: :get, remote: true do |f|

希望對您有所幫助

暫無
暫無

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

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