博客统计信息

51cto推荐博客
用户名:fsjoy1983
文章数:301
评论数:234
访问量:422967
无忧币:2144
博客积分:3830
博客等级:7
注册日期:2008-02-04

我的技术圈(3)

更多>>
循环列表中给删除功能加上Ajax特效
2008-08-07 20:11:21
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://fsjoy.blog.51cto.com/318484/91650
前几天一直想实现一个功能就是在循环显示的列表中,删除某一行数据时使用Ajax效果。今天似乎搞定了,唯一值得研究的一点就是对于element标记id的地方。下面给出这个实例的整个过程:
 
generate model product
 
数据迁移任务:
class CreateProducts < ActiveRecord::Migration
  def self.up
    create_table :products do |t|
      t.column :name,:string
      t.column :content, :text
    end
  end

  def self.down
    drop_table :products
  end
end
建立一个controller,用来生成脚手架,可以添加product对象数据。
generate controller admin
在controller中添加scaffold :product
另外建立一个list_controller及其两个视图
generate controller list index delete
list_controller中的内容:
class ListController < ApplicationController

  def index
    @products=Product.find(:all, :order=>"name")
    
  end
  
  def delete
    Product.find(params[:id]).destroy
    redirect_to :action=>"index" if request.xhr?
  end
end
在index视图中,index.rhtml里添加代码:
<h1>List Products</h1>
<table>
<tr>
  <th>name</th>
  <th>content</th>
</tr>
<%@products.each do |product|%>
  <tr id=<%="current_product#{product.id}"%>>
      <td><%=h(product.name)%></td>
      <td><%=h(product.content)%></td>
      <td><%=link_to_remote "delete", :url=>{:action=>"delete", :id=>product}, :complete=>visual_effect(:fade, "current_product#{product.id}")%></td>
      </tr>
    <%end%> 
 </table>
这样从admin/index里可以create products,在list里显示这些数据,也可以实现删除的Ajax效果,一切工作顺利。
这里还有个地方要注意下,    在delete这个action中要加上
redirect_to :action=>"index" if request.xhr?
如果不加这句,firebug会给出一个错误的提示,说你missing template "delete.rhtml", 虽然在支持Javascript的浏览器上不会发生错误,但是如果浏览器不支持Javascript,那么delete就不能正常运行了。

本文出自 “李骥平” 博客,请务必保留此出处http://fsjoy.blog.51cto.com/318484/91650

分享至
更多
一键收藏,随时查看,分享好友!
0人
了这篇文章
类别:ROR技术圈()┆阅读()┆评论() ┆ 推送到技术圈返回首页
上一篇 Visual Effects 下一篇 4.2. Drag and Drop

文章评论

 
2008-08-10 11:05:07
来了解一下子

 

发表评论            

【技术门诊】专家解析:软考重点难点及应试技巧
昵  称:
登录  快速注册
验证码:

请点击后输入验证码博客过2级,无需填写验证码

内  容: