当前位置: 首页 > 面试题库 >

Rails 3.1 Ajax:成功处理

吴德辉
2023-03-14
问题内容

因此,我正在使用CoffeeScript,Rails 3.1玩的很开心。我拥有所有常用路线索引,显示,创建,编辑,更新,销毁的资源。

索引视图的格式:remote => true如下:

<%= form_for @todo, :remote => true do |f| %>
    <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

在创建控制器中,我具有以下内容:

def create
    @todo = Todo.new(params[:todo])

    respond_to do |format|
      if @todo.save
        format.html { redirect_to @todo, notice: 'Todo was successfully created.' }
        format.json { render json: @todo, status: :created, location: @todo }
        format.js {render json: @todo }
      else
        format.html { render action: "new" }
        format.json { render json: @todo.errors, status: :unprocessable_entity }
      end
    end
  end

我试图不使用.js.erb视图,因为我宁愿处理返回的JSON并把所有花式追加到待办事项列表上,依此类推。(对我来说更干净)。

在我的todos.js.coffee中,我使用了以下内容:

$(document).ready ->
    $("#new_todo")
      .bind "ajax:success", (event, data) ->
        alert("Ajax SUCCESS!!!")

(是的,只想打开一个警报框是行不通的)我尝试加载,但无法触发此事件。该请求确实成功完成,并添加了新的待办事项。

任何帮助,将不胜感激。谢谢


问题答案:

开始倾倒在rails.js上,想知道是否有任何ajax:回调被提出。

原来他们很好,并且beforeSend和error …等等…错误吗?怎么会这样
新待办事项的创建成功完成,响应是我期望的JSON。但是在逐步执行回调代码时,我注意到一个Invalid label错误。

快速Google稍后将我带到这篇文章http://blog.seqmedia.com/?p=484

原来JSON是作为字符串返回的,Firbug得到了并正确解析了它,因此我可以检查响应。但是rails.js和js通常不知道如何处理字符串并引发上述错误(我可能会默默地说)。

解决方案在response_to中

format.js {render json: @todo, content_type: 'text/json' }

有点感谢Trevor
Burnham(例如BTW书)的帮助以及来自序列媒体的Amy,后者的博客文章最终为我提供了解决方案。



 类似资料:
  • 使用下面的代码和twitter4j库,我终于成功地处理了我自己的tweets。我现在一直在努力调整代码,以吸引特定用户的推文,没有任何运气,不管网上有很多人发布了“工作代码”。有人能引导我,告诉我到底需要改变什么吗?谢了! 编辑-修改的代码,以获得用户推特。不产生错误或结果...

  • 本文向大家介绍如何处理jQuery AJAX成功事件?,包括了如何处理jQuery AJAX成功事件?的使用技巧和注意事项,需要的朋友参考一下 要处理jQuery AJAX成功事件,请使用方法。只要AJAX请求成功完成,ajaxSuccess(callback)方法就会附加一个要执行的函数。这是一个Ajax事件。 这是此方法使用的所有参数的描述- callback- 要执行的功能。事件对象,XML

  • 有没有一种方法可以添加一个登录成功处理程序使用spall-oaut2? 我尝试使用基本身份验证过滤器,但它只过滤客户端凭据,而不是用户凭据。 还是需要创建自定义用户身份验证管理器? 蒂亚

  • 问题内容: 我已经使用jQuery和AJAX几周了,并且在调用完成后,我看到了两种“继续”脚本的不同方式:和。 从jQuery文档的提要中,我们得到: .done():说明:添加要解析Deferred对象时要调用的处理程序。 成功:(。ajax()选项):如果请求成功,则要调用的函数。 因此,在AJAX调用完成/解决之后,两者都要做一些事情。我可以随机使用其中之一吗?有什么区别?何时使用一种替代另

  • 我有一个在视图上执行动画的功能。我想为此函数实现一个完成处理程序,该处理程序将在动画完成后调用。 在ViewController中... 在HudView类中... 我尝试了很多方法,但找不到正确的语法: 传递非转义参数“myCompletionHandler”到函数,期望一个@转义闭包 无法将“Void”类型的值转换为预期的参数类型“((Bool) - 闭包:使用非转义参数“myCompleti

  • 在web.xml中,我有以下内容