- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要什么
我使用新的 Rails respond_to Controller Api 和 ajax 表单。如果对象未验证,rails 将返回 Json 错误对象并触发“ajax:error”事件。我想在相应的表单字段下/下显示每个错误(我们正在使用 formatastic)。
这是我的例子..
Controller :
class Admin::PrivateMessagesController < AdminController
respond_to :json
def create
private_message = PrivateMessage.new(params[:private_message])
private_message.save
respond_with private_message
end
end
查看
<%= form_for @private_message, :remote => true, :html => {"data-type" => "json"} do |f|
f.input :body
...
end %>
js/coffeescript
我只是将所有错误添加到字符串中并显示它们..
$("#new_private_message").on 'ajax:error', (event, data, status) ->
error = "Errors: "
$.each $.parseJSON(data.responseText), (field, errorMessage) ->
error += "#{field}-#{errorMessage} "
$('#errors').html(error)
json 错误对象
{"body":["Please enter a message."],"subject":["Please enter a message."]}
我的问题!
最佳答案
我必须自己解析 json 吗?
是的,jQuery Ajax API 不会自动解析错误响应。您必须自己执行此操作。
如何将错误消息添加到该字段?
以下是如何处理错误的快速示例:http://jsfiddle.net/hpM6W/
尽管需要更详尽的解决方案。例如,在我提供的示例中,提交两次,看看会发生什么......
有许多工具包和库可用于丰富的客户端验证和错误消息的呈现。我强烈建议查看 jQuery Validation Plugin开始表单验证。你仍然应该always do server side validation并返回任何错误。
我过去所做的是一个混合模型,我会进行客户端验证以方便用户(更好的用户体验),并使用 jQuery 验证插件来呈现服务器端验证的结果通过showErrors方法。
这是一个简单的示例:http://jsfiddle.net/GNq84/关于如何使用 showErrors 显示服务器端验证产生的错误消息。请注意,在此示例中多次提交效果会更好。
但是,有一个警告,showErrors 预计会出现如下错误: { "element": "message"}
而不是您当前拥有的错误: { "element": [ "message1", "message2"] }
,但我会把这个问题留给你来解决:)
关于jquery - 一个很好的例子,rails respond_to 如何处理模型验证错误和 ajax 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9405151/
我正在通过railstutorial.org学习Rails,但我对一些事情感到困惑:在 this chapter作者告诉我们在控制台中使用 User 对象的 respond_to? 方法进行一些测试,
我可以在 irb 的主要对象中使用 respond_to?(): irb(main):001:0> def foo irb(main):002:1> "hi" irb(main):003:1> e
在所有其他方法中,它与 format.html 一起工作正常,但在这个与 format.js 的方法中,它更新 View 但可见 url 保持不变 respond_to do |format| f
我目前正在构建一个需要远程表单的应用程序,我发现我从来没有真正理解rails respond_to 的工作原理。 例如,我在 View 中有以下代码 true %> 我有一个名为 _home.j
我试过: 1.respond_to? "clone" # => true 1.clone # => TypeError: can't clone Fixnum
如果您有一个要测试其存在的属性列表,并且您有以下内容: before do @attr = Employee.new(name: "One", ema
我有一个模块定义了一个方法,如果它还没有被定义的话。 ActiveRecord 的属性就是这种情况,因为它们的 getter 和 setter 未定义为方法。 module B def creat
编辑:我使用的是 Ruby 2.0.0 版 我在文件 example.rb 中有以下代码 def say_hello puts 'hi' end puts respond_to?(:say_hel
与定义 respond_to? 相比,定义 respond_to_missing? 有什么意义?如果为某些类重新定义 respond_to? 会出什么问题? 最佳答案 没有respond_to_mis
假设我有一个 ArtcilesController使用如下创建操作。 def create @article = Article.new(params[:article]) respond_t
如果我想检查是否定义了具有给定名称的方法,最好使用respond_to?或defined?? 从效率的角度来看,使用defined?可能存在争议,因为defined?是内置关键字,而respond_t
我有一个使用 form_for 和 remote: true 设置的表单。 正如预期的那样,vocab Controller 中的相应更新操作将请求作为 JS 处理: Processing by V
我的 cart_controller 中有几个 Action 。我在/carts 中有 2 个 View :payment.html.erb 和 pay.html.erb def pay suc
我的 Rails 应用程序中创建 Controller 中的 respond_to block 在成功保存时没有重定向...我确信这是一个简单的解决方案,但我对 Rails 缺乏经验,这是我第一次遇到
我的 cart_controller 中有几个 Action 。我在/carts 中有 2 个 View :payment.html.erb 和 pay.html.erb def pay suc
我试图解决这个问题,但我需要帮助! 我正在使用rails 3和jquery,我包含rails.js并使用gem'jquery-rails'来创建它 - 但仍然;使用 $.ajax({url: self
我有一个评级 Controller ,其创建操作通过 Javascript 调用。我的评级文件夹中有一个 create.js 文件。我想为了调用 create.js 文件你需要这样的东西 respon
我的 Controller 中有这个方法: def index @hedge_fund_index_matrix = HedgeFundIndices.matrix @hedge_fu
最近我一直在尝试Rails,并且开始喜欢上respond_to。 在 PHP 中是否可以做这样的事情?,响应不同类型的请求。因此,即使禁用了 javascript,也很容易实现替代方法。 最佳答案 您
我目前正在尝试为收费表单编写功能测试,该表单通过 AJAX(jQuery) 加载到页面上。它从 charge_form 操作加载表单,该操作返回 Consult_form.js.erb View 。
我是一名优秀的程序员,十分优秀!