Javascript Rails-无法在失败的ajax表单提交上显示错误
我已经尝试了一段时间了,但是当用户通过ajax提交表单并且表单失败时,无法显示任何错误(我也无法显示成功消息,但这没什么大不了的) 这是我的 形式Javascript Rails-无法在失败的ajax表单提交上显示错误,javascript,ruby-on-rails,ajax,ruby-on-rails-4,Javascript,Ruby On Rails,Ajax,Ruby On Rails 4,我已经尝试了一段时间了,但是当用户通过ajax提交表单并且表单失败时,无法显示任何错误(我也无法显示成功消息,但这没什么大不了的) 这是我的 形式 <ul id="errors"> </ul> <%= form_for([@guide, @category, @key], url: guide_categories_keycreate_path(category_id: params[:id]), remote: true, :authenticity_toke
<ul id="errors">
</ul>
<%= form_for([@guide, @category, @key], url: guide_categories_keycreate_path(category_id: params[:id]), remote: true, :authenticity_token => true) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name, "Key name" %>
<%= f.text_field :name %>
<%= f.select :key_type, [['Value', 1], ['Text', 2], ['Image', 3]] %>
<%= f.submit "Next", :value => "Add New Key" %>
<% end %>
javascript
$(document).on "ajax:error", "form", (evt, xhr, status, error) ->
errors = xhr.responseJSON.error
for message of errors
$('#errors ul').append '<li>' + errors[message] + '</li>'
$(文档)。关于“ajax:error”、“form”(evt、xhr、status、error)->
errors=xhr.responseJSON.error
错误信息
$(“#errors ul”)。附加“”+错误[消息]+” '
表单不在其正常的键/创建视图中,以防代码中的某些内容使您感到困惑,这可能会解释为什么会这样
不知道从这里去哪里,我基本上复制了教程中的编码。我已经看过并尝试了一些教程,也看到了一些stackoverflow问题,这些基本上是我所需要的,但不起作用。不知道下一步该怎么办 此处可能出现错误:
$('#errors ul').append '<li>' + errors[message] + '</li>'
不知道下一步该怎么办 你需要调试 您的问题概述可以通过以下方式解决:
<%= form_for [@guide, @category, @key], url: guide_categories_keycreate_path(category_id: params[:id]), remote: true, authenticity_token: true, data: { type: :json } do |f| %>
--
控制台
你需要确保你知道你的应用程序中发生了什么;你也有所有的工具来做这件事。首先,您需要确保知道正在发送哪些请求。通过网络来实现这一点
在Firefox和Chrome中
Right Click > Inspect Element > Console > "Network" (tab)
当您进入此选项卡并单击远程表单上的“提交”时,您将看到请求(和响应)出现。您可以使用此选项确定问题所在:
你可以读更多
-
JS
第二,你的流量可能会有问题
使用上述代码,您只发送了一个JS
请求(而不是JSON
)。如果您想要JSON
,则必须按如下方式设置类型
:
<%= form_for [@guide, @category, @key], url: guide_categories_keycreate_path(category_id: params[:id]), remote: true, authenticity_token: true, data: { type: :json } do |f| %>
您还需要确保JS的格式正确(我的第一点)
最终,我无法梳理每一行代码——您需要使用我概述的工具来了解可能存在的问题
-
控制器
最后,最后一个问题可能是控制器
虽然不太可能,但您可能没有发送格式正确的请求等;导致控制器发送错误响应
我强烈建议您使用Rails控制台查看出了什么问题:
每次向应用程序发送请求时,控制台日志都应记录该请求。因此,如果您有任何问题,您需要检查记录了哪些问题。如果你发布了这篇文章,它会让你更好地了解正在发生的事情哇,这是一个很棒的答案!我来试试看。你帮了我很多忙。我还有一个问题,我花了一整天都没有运气。它是一个嵌套的表单,不知道什么时候停止工作(测试通过)。我不知道是什么原因导致它现在只在表单提交上传递id,其他什么都没有
Right Click > Inspect Element > Console > "Network" (tab)
<%= form_for [@guide, @category, @key], url: guide_categories_keycreate_path(category_id: params[:id]), remote: true, authenticity_token: true, data: { type: :json } do |f| %>