- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Ruby on Rails 的初学者,因此如果问题很明显,我深表歉意。我目前正在从事一个名为成绩簿的项目。在成绩簿的一个页面上,我一直在开发一项功能,用户可以单击“新类别”,然后在 div 中呈现一个表单,允许用户输入有关类别的信息,然后保存更改后,该类别将显示在屏幕上。所有这些都将使用 AJAX 进行。
这是我的思考过程:
我向 View 添加了一个提交按钮,该按钮将触发类别 Controller 上的"new"操作。我使用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>
在类别 Controller 中,我创建一个新类别并指定我只想生成 JavaScript 响应:
def new
@category = Category.new
respond_to do |format|
format.js
end
end
我在类别文件夹中创建“new.js.erb”,该文件夹将负责在 div 内呈现我的类别表单:
$('#category_form').html("<%= j (render 'newcategory') %>");
我创建了 _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:
这是我尝试过的所有方法:
我尝试更改:
respond_to do |format|
format.js
end
对此:
respond_to do |format|
format.html
format.js
end
我读到使用“format.js”作为唯一的响应可以产生这个错误。然而,这只是给了我“缺少模板类别/新”。虽然我不必指定 new.html.erb,因为我希望这是一个 AJAX 响应并且我希望它保持在同一页面上。
我尝试删除 tmp 文件夹,但没有成功。
我使用“File.exists?”检查以确保文件存在,它们确实存在。
我检查以确保服务器没有将其解释为 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”,但我无法理解此路由错误发生在哪里。
目前,我不太确定问题是什么。我觉得这个问题非常明显,但 Rails 服务器的行为就像 javascript 文件甚至不存在一样。任何帮助将非常感激。非常感谢。
最佳答案
是的,这是因为如果您查看屏幕截图,您会发现这是操作 POST(form_for
自动使用 POST 方法),但 Rails 处理像 GET 一样使用“new”的请求。如果您输入rake paths
或bundle exec rake paths
,您会发现您的操作为GET。你可以直接在form中设置action为GET而不是POST:
form_for :category, url: new_gradebook_category_path, method: :get, remote: true do |f|
希望对你有帮助
关于javascript - Ruby on Rails - AJAX 问题(ActionController :UnknownFormat),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26415736/
我在玩 cucumber 时发现我的 Rspec 测试开始失败。在我安装 cucumber 之前一切都运行良好。有任何想法吗? 日志 /Users/szymonborucki/.rbenv/versi
我知道这已经被提出 a few times在SO上,但我无法取得进展。我在 Rails 5.0.7.2 上。 我收到 ActionController::InvalidCrossOriginReque
以下是由我的 Rails 应用程序中的表单引起的错误: Processing UsersController#update (for **ip** at 2010-07-29 10:52:27) [P
我有这个遗留的 Spree 应用程序,带有 2 个带有继承回调的装饰 Controller : Spree::Api::BaseController.class_eval do before_ac
我很好奇这一般意味着什么。 但这里是细节.. 我正在做一个可排序的 jquery 项目,涉及这个 rails Action : def update_order params[:media].ea
我收到来自 "button" %> 线路的无路由匹配错误. 在我添加 gem 之前,这曾经有效,但现在它停止工作了。我尝试过收藏,但我没有运气,因为那是以前的地方。 路线: resources :
我发现使用诸如 foo.bar.uk.com 之类的域会导致 Rails扔一个 ActionController::InvalidAuthenticityToken提交任何表格时。 foo.bar.c
我有一个使用 ActionController::Metal on Rails 4.1.6 的 Api Controller ,如下所示: class Api < ActionController::
在我的 ActionController::Live 监听大约 5 分钟后,我在浏览器中看到以下内容,并且我的 EventSource 断开了连接。 EventSource 的响应具有不是“text/
我正在使用 Rail4 并尝试通过 GET 请求发送一些纯文本: def get_text respond_to do |format| format.text { render :tex
我的道路有问题,我不明白他为什么告诉我“Dashboard::TasksController”因为在我的 Controller 文件中包含文件 dashbaord/tasks.rb class Tas
我的 Controller 页面有问题。顺便说一句,我想执行 localhost:3000/article/donat?author_id=4,这意味着我只想查看 author_id = 4 的文章我
我正在运行一个 rails 应用程序,我有一个简单的显示操作,其中的代码类似于以下内容: @post = Post.find(params[:id]) 所以如果你去帖子/1 例如,如果有帖子,您将看到
在 Rails 4.1.6 中,我收到 InvalidAuthenticityToken运行使用脚手架生成的测试时出错。有没有办法禁用特定测试的真实性 token 检查? rails g scaffo
我正在努力使 ActionController::UnknownFormat不会在生产中引发异常报告。我正在使用 Rails 4 并认为这样的事情可以解决问题,但似乎没有什么区别: applicati
我正在尝试使用 Rails 4 的实时流实现文本/事件流。它工作得很好,我遇到的唯一麻烦是我无法在不发送任何消息的情况下检查连接是否有效。 我想出的唯一解决方案是使用循环滴答发生器制作支持 chann
我已经阅读了所有可以找到的类似问题,但仍然无法弄清我的问题。 # routes.rb Rails.application.routes.draw do resources :lists, only
我在 application_contoller.rb 中有一个方法,其中包含对 send_file 的调用。我从 javascript 渲染的部分调用它,并收到以下错误 - ActionView::
所以...第一次向 StackOverflow 提问... 我按照 Rails Guides 和 RailsApps 项目将现有的 Rails 4.2.5 应用程序(使用 Ruby 2.2.4)转换为
我有一个关于 Rails ActionController::Live 的问题 最后我想向用户展示 FFMPEG 的进展,但现在我想让这个最小的示例运行: Rails media_controller
我是一名优秀的程序员,十分优秀!