我在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但是我不知道如何处理响应?请帮忙。
答案 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);
});
}