在rails中使用jquery实现Ajax

简介:
在rails中使用jquery实现Ajax
下面通过一个实例来讲解如何在Rails用jquery实现Ajax式的添加和删除操作.
我的环境:
ruby187,rails 222, jquery1.3.2 jquery.form.js

首先新建rails应用
rails app -d mysql
新建数据库app_development
script/generate model product name:string
script/generate controller products index
rake db:migrate


把jquery.js和jquery.form.js放到public/javascripts目录下

编辑app/app/views/layouts/application.html.erb
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title>Application</title>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
      <title>index</title>
      <%= javascript_include_tag "jquery" %>
      <%= javascript_include_tag "jquery.form" %>
      <%= javascript_include_tag "application" %>
    
</head>

<body>

    <%= yield %>

</body>
</html>

在products_controller.rb中定义下面几个action:


class ProductsController < ApplicationController
  def index
      @products = Product.find(:all)
  end

  def create
    if Product.create(params[:product]).valid?
      @products = Product.find(:all)
      render :partial => "products_list"
    else
      render :text => "something  wrong", :status => "500"
    end
  end

  def delete
    Product.destroy(params[:id])
    @products = Product.find(:all)
    render :text => ""
  end
  
end


编辑app/app/views/products/index.html.erb
<% form_for :product, :html=>{:method=>"post",:id=>"create-product"}, :url=>{:controller=>"products", :action=>"create"} do |f|%>
<label>Product Name:<%= f.text_field :name %></label>
<%= submit_tag "submit" %>
<% end %>

<div id="products-list">
  <%= render :partial => 'products_list'%>
</div>


编辑app/app/views/products/_products_list.erb
<% unless @products.empty? %>
<table>
    <tr>
        <th><b>Product Name</b></th>
    </tr>
    <% @products.each do |product| %>
    <tr>
        <td>
        <%= product.name%>
        </td>
        <td><%= link_to "Delete", {:controller=>"products", :action=>"delete",:id=>product}, :class=>"delete"%></td>
        <td>Edit</td>
    </tr>
    <% end %>
</table>
<% end %>


编辑public/javascripts/application.js
DeleteProduct()是用jquery实现的ajax方式.
CreateProduct()用到了jquery.formAjax提交方式

$(document).ready(function() {
    function DeleteProduct() {  //定义删除函数
      $('#products-list a.delete').bind('click', function() { //将delete链接与click绑定
        var deleteLink = $(this)   //将这个链接的dom赋值给deleteLink变量
        $.ajax({        //Ajax函数
          type: 'delete',    //定义http方法
          url: deleteLink.attr('href'),     //请求的URL
          success: function(){deleteLink.parent().parent().remove()}  //请求成功之后的动作
        })
        return false //阻止普通的提交方式 和页面导航

      })
    }

    function CreateProduct() { //添加product函数
      $('#create-product').submit(function() { //点击submit的函数
        $(this).ajaxSubmit({ //点击submit发起ajax请求
          target: '#products-list',   //目标是对id=product0list的dom进行局部更新
          clearForm: true, 
          success: DeleteProduct,  
          error: displayError //发生错误,譬如validate?为false时
        })
        return false
      })
    }

    function displayError(request, errorType) {
      var msg = '<div class="error">'+request.responseText+'(click to close)</div>'
      $('#products-list').append(msg)
      $('.error').click(function(){$(this).hide()})
    }

    $(function() {
      DeleteProduct()
      CreateProduct()
    })
    
});
jquery.form.js的更多内容参阅 API

现在启动服务 script/server
就可以看到用Ajax实现的添加和删除了. 




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/141760,如需转载请自行联系原作者
目录
相关文章
|
8月前
|
前端开发 JavaScript
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
62 0
|
4月前
|
前端开发 JavaScript 数据处理
JQuery 拦截请求 | Ajax 请求拦截
【10月更文挑战第4天】
193 1
|
5月前
|
JSON 前端开发 JavaScript
jQuery AJAX 方法
jQuery AJAX 方法
54 1
|
5月前
|
JSON JavaScript 前端开发
Jquery常用操作汇总,dom操作,ajax请求
本文汇总了jQuery的一些常用操作,包括DOM元素的选择、添加、移除,表单操作,以及如何使用jQuery发送Ajax请求,涵盖了GET、POST请求和文件上传等常见场景。
|
5月前
|
JSON 前端开发 JavaScript
jQuery AJAX 方法
jQuery AJAX 方法
35 1
|
6月前
|
前端开发 JavaScript Java
SpringBoot+JQuery+Ajax实现表单数据传输和单文件或多文件的上传
关于如何在SpringBoot项目中结合JQuery和Ajax实现表单数据的传输以及单文件或多文件上传的教程。文章提供了完整的前后端示例代码,包括项目的`pom.xml`依赖配置、SpringBoot的启动类`App.java`、静态资源配置`ResourceConfig.java`、配置文件`application.yml`、前端HTML页面(单文件上传和多文件上传加表单内容)以及后端控制器`UserController.java`。文章最后展示了运行结果的截图。
372 0
SpringBoot+JQuery+Ajax实现表单数据传输和单文件或多文件的上传
|
6月前
|
XML JSON 前端开发
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
45 0
|
6月前
|
JavaScript 前端开发
Ajax的使用(jquery的下载)
这篇文章是关于Ajax学习笔记的分享,包括JQuery的下载方式、Ajax的主要参数说明,以及如何在网页中使用Ajax进行异步请求的示例代码。
|
8月前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
JavaScript 前端开发
JQuery实现仿sina新浪微博新鲜事滚动
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.
746 0