繁体   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