rails.js是rails处理ajax的核心代码,它其实就作两件事情:javascript
具体开发的时候,也很是简单(以form_for为例):html
在本来的form_for加上:remote => true,这样就会在生成的html代码上加上data-remote=true。java
Ajax不只须要编写客户端代码,服务器端也要作处理,服务端返回什么类型的数据,这个能够经过在form_for上加上"data-type" => 'json',固然若是不添加,默认是js,示例以下:jquery
# app/controllers/users_controller.rb # ...... def create @user = User.new(params[:user]) respond_to do |format| if @user.save format.html { redirect_to @user, notice: 'User was successfully created.' } format.js {} format.json { render json: @user, status: :created, location: @user } else format.html { render action: "new" } format.json { render json: @user.errors, status: :unprocessable_entity } end end end
3. 接下来就有两种方式,第一种,返回html片断或者json,在页面添加自定义事件处理代码,让js完成页面的更新: ``` $(document).ready -> $("#new_user").on("ajax:success", (e, data, status, xhr) -> $("#new_user").append xhr.responseText ).on "ajax:error", (e, xhr, status, error) -> $("#new_user").append "<p>ERROR</p>"
第二种,返回的是一段js,客户端加载并执行这段js,这个js是由js.erb文件生成的,在js.erb中咱们写上处理页面更新的代码,这种方式和第一种相比,代码更轻松简单:ajax
$("<%= escape_javascript(render @user) %>").appendTo("#users");
###更详细: http://guides.ruby-china.org/working_with_javascript_in_rails.html https://www.alfajango.com/blog/rails-3-remote-links-and-forms https://www.alfajango.com/blog/rails-3-remote-links-and-forms-data-type-with-jquery http://blog.madebydna.com/all/code/2011/12/05/ajax-in-rails-3.html