如何处理Rails 3中的Ajax请求的响应?

时间:2012-03-06 07:57:24

标签: ruby-on-rails ruby ajax ruby-on-rails-3

我在Ruby on Rails 3中设置了一个CRUD应用程序 - 它的工作原理。我需要在这里添加一些ajax。我的第一个要求是在单击“新建表单”链接时检索自定义表单。这是我此时的链接:

<%= link_to 'New Book', new_book_path(:subject_id=>@subject.id), :remote=>true %>

对于我的控制器,我对新书的行动进行了以下调整:

def new
    @book = Book.new
    if params[:subject_id].to_i >0 then
      @book.subject_id = params[:subject_id]
    end

    if request.xhr?
      respond_to do |format|
        format.html # new.html.erb
        format.json { render json: @book }
        render :layout => false, :file=>'app/views/books/_form'
        return false
      end
    else
      respond_to do |format|
        format.html # new.html.erb
        format.json { render json: @book }
      end
    end
  end

我检查了firebug并点击生成的链接返回表单html但是我不知道如何处理响应?请帮忙。

2 个答案:

答案 0 :(得分:1)

而不是使用HTML响应.js

你的.js.erb文件里面可能是这样的

$("#idname").append(<%= render "form" %>)

这样它呈现并返回表单HTML,但也提供了js代码来附加HTML。

答案 1 :(得分:0)

你当然可以依赖Rails生成的JavaScript,但我总是希望对我的JavaScript代码有更多的控制权。在例如jQuery你可以有这样的东西(未经测试),如果你想将控制器渲染的部分(html)插入到网站中:

$("#new-book-button").click( function () {
  $.get('books/new', function(data) {
    $('#some-form-container').html(data);
  });
}