xiaoqiu369

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  7 Posts :: 3 Stories :: 2 Comments :: 0 Trackbacks

2009年3月4日 #

注:rails的版本是2.0以上.

1.在application.rb里添加分页信息方法:

1 def page_for(result,options={})
2 
3       default_options = {:per_page => 10}   
4        options = default_options.merge options   
5        pages = WillPaginate::Collection.new(options[:page],options[:per_page],result.total_hits)   
6         return pages
7     
8     end
2.users_controller.rb里添加search方法:
 1   def search
 2     
 3     @keyWord=params[:keyWord]
 4     if params[:page]==nil||params[:page]==""
 5       @page=1
 6     else
 7       @page=params[:page]
 8     end
 9     @users=User.find_by_contents(@keyWord,:per_page=>2,:page=>@page)
10     @pages=page_for(@users,:page=>@page,:per_page=>2)
11   end
3.view页面:
 1 <%@users.each do |user|%>
 2 <br>
 3    username: <%=user.highlight(@keyWord,:field=>:user_name,:num_excerpts=>1,:pre_tag=>'<strong>',:post_tag=>'</strong>')%><br> 
 4    地址:<%=user.highlight(@keyWord,:field=>:introduce,:num_excerpts=>1,:pre_tag=>'<strong>',:post_tag=>'</strong>')%>
 5 ==================================================================================
 6 <%end%>
 7 <p>
 8   共<%=@users.total_hits%>条记录
 9 </p>
10 <p>
11   <%=link_to "上一页",{:page=>@pages.previous_page,:keyWord=>@keyWord} %>
12 <%=link_to "下一页",{:page=>@pages.next_page,:keyWord=>@keyWord} %>
13 <br/>
14 <%=will_paginate @users%>
15 </p>
posted @ 2009-03-04 20:00 bobqiu 阅读(222) | 评论 (1)编辑 收藏

2009年2月20日 #

按照网上传统的方法安装几次都没有成功.最后只有下载gem文件安装
1.下载ferret-0.11.6-mswin32.gem文件
2.用gem 安装:gem install ferret-0.11.6-mswin32 --local
3.gem install acts_as_ferret
4.从网上下载ferrect_ext.so文件,copy到 ferret-0.11.5-x86-mswin32\lib目录(跟ferret.rb同一目录)

如果直接下载源码安装运行ruby setup.rb.会出现"the c extensions could not be installed"的错误


手动安装plugins

将下载的源文件放到vendor/plugins里面,进入该目录,运行ruby install.rb

出现的问题:

=> Booting WEBrick...

c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:442:in `load_missing_constant': uninitialized constant Ferret::Analysis::Analyzer (NameError)

        from c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:77:in `const_missing'

        from E:/rorapp/demo/vendor/plugins/acts_as_ferret/lib/ferret_extensions.rb:17

        from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'

        from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

        from c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:155:in `require'

        from E:/rorapp/demo/vendor/plugins/acts_as_ferret/lib/acts_as_ferret.rb:28

        from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'

        from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

         ... 25 levels...

        from c:/ruby/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/server.rb:49

        from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'

        from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

        from script/server:3

 解决办法就是把上面安装完成ferret后的文件里找到ferrect_ext.so将这个文件放到lib里面.这个是200多K,而从网上下载的才30K.导致上面的问题.

posted @ 2009-02-20 22:31 bobqiu 阅读(924) | 评论 (0)编辑 收藏

2009年2月7日 #

1.验证码:recaptcha
gem install --source http://www.loonsoft.com/recaptcha/pkg/ recaptcha

2.搜索:acts_as_searchable是一个Rails插件,它依赖于Hyper Estraier这个独立的搜索引擎所提供的索引和搜索服务 
            ferret gem install ferret -v=0.11.5 --platform mswin32  
3.pdf:
gem install pdf-writer  

4.测试:
RSpec+Mocha

5.桌面应用
gem install anvil

posted @ 2009-02-07 14:57 bobqiu| 编辑 收藏

2009年1月19日 #

使用插件

1/ will_paginate

    http://groups.google.com/group/will_paginate

 

这个资料很多,不多说

 

2/ squirrel

    下载:http://github.com/thoughtbot/squirrel/tree/master

 

主要实现 动态条件的查询,扩展ActiveScaffold find方法。支持跨Model查询,具体见

    说明:http://thoughtbot.com/projects/squirrel

 

贴段主要实现代码

#controller:

def index

#######################################################

#下面代码可以按实际情况提取到Model或其他地方;方便测试我直接放在index下

#######################################################
    @permissions = Permission.find(:all) do
      paginate :page => params[:page]||1,:per_page=>5
      any do
        name == params[:permission][:name] unless params[:permission].nil?
        code == params[:permission][:code] unless params[:permission].nil?
        permit_date == params[:permission][:permit_date] unless params[:permission].nil?
        contact.company == params[:contact][:company] unless params[:contact].nil?
      end
    end
 #######################################################
    respond_to do |format|
      format.html # index.rhtml
      format.xml  { render :xml => @permissions.to_xml }
    end
  end

 

 

#index--view

 

<% field_set_tag do %>
  <% form_for :permission, :url=>permissions_url,:method=>:get,:html=>{:method=>:get} do |f| %>
    公司名称 :<%= text_field_with_auto_complete :contact, :company,{},{:method=>:get}%>  <br>
    证书类型 :<%= text_field_with_auto_complete :permission, :name,{},{:method=>:get}%>  <br>
    证书编号 :<%= text_field_with_auto_complete :permission, :code,{},{:method=>:get}%>  <br>
    授与日期 :<%= text_field_with_auto_complete :permission, :permit_date,{},{:method=>:get}%>  <br>
    <%= submit_tag '查询'  %>
   <% end %>
<%  end %>

 

...

 

<div class="digg_pagination">
  <div clas="page_info">
    <%= page_entries_info @permissions %>
  </div>
  <%= will_paginate @permissions, :container => false %>
</div>

posted @ 2009-01-19 11:23 bobqiu 阅读(175) | 评论 (0)编辑 收藏

2009年1月5日 #

    1.we receive a new request for a page to our rails application.
    2.Rails routes this request to a controller for processing.
    3.Our controller interacts with the models in our application to gather the necessary data
    4.Our model may retrive or insert data to our database
    5.Once our models have generated or retrived correct information,they return the data back to the collection
    6.The controller collects all of the data it's received from models and selects a view template to render
    7.The view template is rendered using  the data that the collection gathered and handed to  the web server
    8.An html page is returned to the user.
posted @ 2009-01-05 16:18 bobqiu 阅读(124) | 评论 (0)编辑 收藏

2008年12月23日 #

按照惯例,还是打印出Hello world.

/app/controllers/stories_controllers.rb:

class StoriesController<ActionControllers::Base
    def index
        @varies="hello world"
    end
end


/views/stories/index.html.erb:

<%=@varies%>

/config/routes.rb

ActionController::Routing::Routes.draw do |map|
    map 'stories',:controller=>'stories',:action=>'index'
end

启动服务在IE中打开:
http://localhost:3000/stories
OK
posted @ 2008-12-23 16:46 bobqiu 阅读(158) | 评论 (0)编辑 收藏

2008年12月22日 #

正在尝试使用 URL E:\eclipse3.1.2\workspace\red51\fla\test51.swf 启动并连接到播放器
解压缩后字节数为 [SWF] E:\eclipse3.1.2\workspace\red51\fla\test51.swf - 2703
Error #2044: 未处理的 NetStatusEvent:。 level=error, code=NetConnection.Connect.Failed
 at test51_fla::MainTimeline/test51_fla::frame1()[test51_fla.MainTimeline::frame1:1]


解决办法 :添加红颜色部分代码/

var nc:NetConnection=new NetConnection();
nc.connect("rtmp://localhost/red51");
nc.objectEncoding=ObjectEncoding.AMF0;
var so:SharedObject=SharedObject.getRemote("mo",nc.uri,false);
nc.addEventListener(NetStatusEvent.NET_STATUS,netStatusEventHandle);

function netStatusEventHandle(e:NetStatusEvent):void {
     trace(e.toString);
}

posted @ 2008-12-22 21:39 bobqiu 阅读(1627) | 评论 (1)编辑 收藏

2008年12月21日 #

     摘要: call.fla:  1nc = new NetConnection();  2nc.connect("rtmp://localhost/red5");  3nc.onResult = function(obj) {  4    var ...  阅读全文
posted @ 2008-12-21 22:12 bobqiu 阅读(1621) | 评论 (0)编辑 收藏

2008年12月19日 #

Rails Routing from the Outside In
http://guides.rails.info/routing_outside_in.html
这篇文章将介绍Rails routing针对用户方面的一些特性.参考这篇文章,你将会学到以下知识:
a.理解routing的作用
b.破解routes.rb内的代码
c.构建你自己的routes,可以用classic hash样式或现在流行的RESTful样式.
d.识别route怎样与controller和action映射.

1.The Dual Purpose of Routing

Rails routing 有两种机制,你可以将trees转换为pager,或把paper转换回trees.具体地说,它可以连接收到的请求与你应用程序的控制器的代码和帮你生成URLs,而不用做为一个字符串硬编码.

1.1connecting URLs to Code;
当你的应用程序收到的请求为:
GET /patients/17
Rails里的路由引擎就是一段分发这个请求到应用程序合适的位置进行处理的一段代码.在这个案例中,这个应用程序很可能以运行patients控制器里的show结束.显示patients ID为17的详细信息.

1.2 Generateing URLs from Code
Routing 也可以反过来运行,如果你的应用程序中包含这样的代码:

@patient=Patient.find(17)
<%= link_to "Patient Record",patient_path(@patient)%>

这时路由引擎转换这个链接到一个URL:http://example.com/patients/17.以这种方式你可以降低应用程序的脆弱性,使你的代码更加容易阅读和理解.

Patient 必须作为一个resource被声明为一个资源,通过named route来转换.

2.Quick Tour of Routes.rb

在Rails中routing有两种组件,routing engine本身,它做为Rails的一部分,config/routes.rb文件,它包含实际的可用在应用程序中的routes.

2.1 Processing the File
在形式上,Routes.rb文件也就是一个大大的block,会被放入ActionController::Routing::Routes.draw.
在这个文件中有五种主要的样式:
RESTful Routes
Named Routes
Nested Routes
Regular Routes
Default Routes

2.2 RESTful Routes
RESTful Routes 利用rails嵌入式REST方法来将routing的所有信息包装为一个单独的声明.eg: map.resource :books

2.3 named Routes
named routes 在你的代码中给你很可读的链接,也可以处理收到的请求

map.login '/login' ,:controller=>'session',:action=>'new'

2.4 Nested routes

Nested routes可以在一个资源里声明另一个资源.

map.resources :assemblies do |assemblies|
 assemblies.resources :parts
end

2.5 Regular Routes
map.connect 'parts/:number',:controller=>'inventory',:action=>'show'

2.6 Default Routes
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'

posted @ 2008-12-19 14:12 bobqiu 阅读(209) | 评论 (0)编辑 收藏

2008年12月16日 #

routes:

routes的命名允许你减少重复的代码,通过分配一个根据生成一个封装routes rule hash的方法的路径规则名称来实现,
你可以定义一个命名路径,你可以调用它在你的routes.rb文件中来代替connect方法.
例如:
map.home '',:controller=>'main',:action=>'start'
这只是为你做了很少的一点事.首先,它创建一个名为home_url的方法.因此上面的命名规则,前期的请求为:
 redirect_to :controller=>'main',:action=>'start' 现在为:
 redirect_to home_url

因为*_to方法被重写的方式,在上面的情况,你没有将参数传递给命名路径,你也可以将它传递给一个引用的方法.
 redirect_to :home_url

注意:将命名路径做为一个符号已经取消了,在rails2.0将被删除.

这个也能应用于是tests.如果在你的controller里有redirect_to home_url,也可以用 assert_redirect_to home_url.

*_url方法需要一个唯一的可选参数.这个参数是一个hash,插入url_for之中,这样做就是为了当用redirect_to,link_to时命名规则可以参数化.

你如果说有这样的route

 map.user_page 'users/:user',:controller=>'users',:action=>'show'

你可以这样做

 link_to @user.username,user_page_url(:user=>@user)

注释:这个仅仅象普通的routes,表单是path_part/:symbol.在上面的例子中,user这部分将只展示在路径中,并不严格与controller相关联.users/只是path生成的部分,
上面的例子生成<a href="http://localhost/users/7">http://localhost/users/7</a>
比如:

:user 是你定义的参数名称,如果定义两个一模一样的路径,很可能得不到你想要的结果.对于routes,定义默认值.

当用参数来命名routes,你必须传递参数给assert中的命名规则.如果在你的controller中有redirect_to user_page_url(:user=>@user), 你需要有assert_redirected_to user_page_url(:user=>@user).controller中@user的id必须与test中的@user的id匹配.

除了[route_name]_url方法,你可以用hash_for_[route_name]_url方法,这个方法包装hash,没有调用url_for

所有的reoute将其它的命名规则用map.connect提供给你.

posted @ 2008-12-16 09:58 bobqiu 阅读(165) | 评论 (0)编辑 收藏