??xml version="1.0" encoding="utf-8" standalone="yes"?>成人短视频软件网站大全app,国产精品电影网,超碰在线97国产http://www.aygfsteel.com/fl1429/Java,Ruby,Php,Flex,Ajax,UI,Google,Twitter,Firefox,Ubuntu,Opensource,Designer,Blogger,Web2.0zh-cnSat, 05 Jul 2025 05:21:22 GMTSat, 05 Jul 2025 05:21:22 GMT60blog 搬家?www.wxianfeng.cnhttp://www.aygfsteel.com/fl1429/archive/2009/10/12/297912.htmlfl1429fl1429Mon, 12 Oct 2009 08:45:00 GMThttp://www.aygfsteel.com/fl1429/archive/2009/10/12/297912.htmlhttp://www.aygfsteel.com/fl1429/comments/297912.htmlhttp://www.aygfsteel.com/fl1429/archive/2009/10/12/297912.html#Feedback1http://www.aygfsteel.com/fl1429/comments/commentRss/297912.htmlhttp://www.aygfsteel.com/fl1429/services/trackbacks/297912.html

l于有了自己的独立域名。。以后blog更新在?br />

里。。这里不会再更新。。域名ؓQ?br />

www.wxianfeng.cn


fl1429 2009-10-12 16:45 发表评论
]]>
Jquery pagination like twitter more buttonhttp://www.aygfsteel.com/fl1429/archive/2009/09/25/296448.htmlfl1429fl1429Fri, 25 Sep 2009 08:50:00 GMThttp://www.aygfsteel.com/fl1429/archive/2009/09/25/296448.htmlhttp://www.aygfsteel.com/fl1429/comments/296448.htmlhttp://www.aygfsteel.com/fl1429/archive/2009/09/25/296448.html#Feedback0http://www.aygfsteel.com/fl1429/comments/commentRss/296448.htmlhttp://www.aygfsteel.com/fl1429/services/trackbacks/296448.html
效果和xiaonei?nbsp; 更多新鲜?nbsp; 一P


前面有篇文章也介l了一个像 twitter more 的方式分늚ҎQ不q那个是?protorype 做的。。那个做h单一点,因ؓrailsl我们封装了 insert_html ?link_to_remote {方法,q样更加便捷Q但是解决jquery ?prototype的confilct是一件很让h头疼的事Q烦性今天又实现了一个基?jquery 的方?环境是在rails中,需要?will_paginate 插gQ?br />Demo:

view:

<script>
(function($){
    var settings;

    $.bottomlessPagination = function(callerSettings) {
        settings = $.extend({
            ajaxLoaderPath:'/images/loading.gif',
            results:'.results', // results q回l果外部的class
            objName:'',
            callback:null
        },callerSettings||{});
        settings.imgLoader = new Image();
        settings.imgLoader.src = settings.ajaxLoaderPath;
        settings.href = $(".current").next().attr("href"); //current ?will_paginate 默认的当前页 href 的名?br />
        if ($('div.pagination').size() > 0){ // pagination ?will_paginate 默认?class
            $('div.pagination').wrap("<div class='pagination_links'></div>").hide();
            $('.pagination_links').append(
                "<div class='live_pagination'>" +
                "<a class='more_links' style='cursor:pointer;'> 查看 " + settings.objName + "...</a>" +
                "</div>"
                );
        }
   
        $(".more_links").click(function(){ 
            $(".live_pagination").hide();          
            if ($(".now_loading").size() == 0)              
                $(".more_links").after("<img class='now_loading' src='"+settings.imgLoader.src+"' />");          
            else
                $(".now_loading").show();           
            $.get(
                settings.href,'',function(data){
                    $(settings.results).addrows(data);
                    $(".now_loading").hide();
                    $(".live_pagination").show();
                }
                );
            return false;
        });

        $.fn.addrows = function(data) {
            //remove live pagination if there are no more results
            // alert(data.length);
            if (data.length === 1 ){
               // alert(data.length);
                $('.live_pagination').remove();
                $('.pagination_links').append(
                    "<div class='no_pagination'>" +
                    "没有" + settings.objName +
                    "</div>"
                    );
                return false;
            }
            //change the href
            ind=settings.href.indexOf("page=");
            page=parseInt(settings.href.charAt(ind+5))+1;
            start=settings.href.slice(0,ind+5);
            stop=settings.href.slice(ind+6);
            settings.href=start.concat(page.toString()).concat(stop);

            //add results to the page
            $(settings.results).append(data);
            if (settings.callback) settings.callback();
        };
    };
})(jQuery);
</script>


          <div class="results">
            <%= render :partial => 'activity' , :collection => @all_feed  %>
          </div>
          <%= will_paginate @all_feed  ,
            :class => 'pagination',          
            :previous_label => '&laquo; Previous',
            :next_label     => 'Next &raquo;',
            :renderer => 'WillPaginate::LinkRenderer' %>
          <div>
<div class="now_loading" style="display:none;">
  <img src="http://www.aygfsteel.com/images/loading.gif"></img>
</div>
<script>
  $.bottomlessPagination({objName:'更多更新', callback:function(){
      //highlight current row
      //  $("div.results").effect("highlight", {}, 3000);
    }});
</script>



Action:
def index

    if request.xhr?    
        sleep(1) # make request a little bit slower to see loader :-)   
          render :partial => 'activity' , :collection => @all_feed
end


partial:_activity.html.erb
partial 里输出数据即?br />

主要的注意点是注意对应class 不要写错了,同样Q你也可以把class 换位id做,jquery取idpP $("#ID")

上面js文g下蝲Q?br />http://www.dbank.com/download.action?k=3094283bf64e445f9530ac0554ebc9ce

ref:
http://github.com/davidwparker/jquery-bottomless-pagination




fl1429 2009-09-25 16:50 发表评论
]]>
Rails sphinx + libmmseg + ultrasphinx 全文?/title><link>http://www.aygfsteel.com/fl1429/archive/2009/09/22/296066.html</link><dc:creator>fl1429</dc:creator><author>fl1429</author><pubDate>Tue, 22 Sep 2009 09:46:00 GMT</pubDate><guid>http://www.aygfsteel.com/fl1429/archive/2009/09/22/296066.html</guid><wfw:comment>http://www.aygfsteel.com/fl1429/comments/296066.html</wfw:comment><comments>http://www.aygfsteel.com/fl1429/archive/2009/09/22/296066.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fl1429/comments/commentRss/296066.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fl1429/services/trackbacks/296066.html</trackback:ping><description><![CDATA[上一遍介l了 thinking_sphix 的用,q次来介l?ultrasphinx 的用,二者都?对sphinx的封装,都是rails的pluginQؓ了更好的利用rails调用sphinxҎ。。?br /><br />前面的配|一?br /><br />Demo:<br />1,安装 chronic<br />gem install chronic<br /><br />2,安装插g<br />ruby script/plugin install  svn://rubyforge.org/var/svn/fauna/ultrasphinx/trunk <br />q个是网上提供的ҎQ目前似乎找不到q个源了。。徏议直接从github download 下蝲<br />http://github.com/fauna/ultrasphinx<br /><br />3Q安装完Ultrasphinx之后Q将Q?<br />vendor/plugins/ultrasphinx/examples/default.base <br />复制刎ͼ <br />config/ultrasphinx/default.base <br />其中的Q?<br />charset_type = utf-8 <br />改ؓQ?<br />charset_type = zh_cn.utf-8 <br /><br />q且在charset_type讄的下面加入一行: <br />charset_dictpath =  /home/feng/RailsProject/Search/lib  Q?你uni.lib 字典所在的路径<br />然后删除所有charset_table的设|?<br /><br />4QModel<br />  is_indexed :fields => ['created_at', 'name']<br />  is_indexed :fields => ['created_at', 'content']<br /><br />5Qaction<br />  def index<br /># thinking_sphinx<br />#    @articles = Article.search params[:search], :include => :author, :match_mode => :boolean<br />#ultrasphinx<br />    @search = Ultrasphinx::Search.new(:query => params[:search])<br />    @search.run<br />    @articles = @search.results<br />  end<br /><br />6,生成配置文gQ?<br /><strong>rake ultrasphinx:configure</strong> <br />在config/ultrasphinx下创Z一个development.confQ这个文件就是Sphinx的配|文件?<br /><br />7,创徏索引Q?<br /><strong>rake ultrasphinx:index</strong> <br />索引创徏在了 default.base 中你定义的path 路径?br /><br />8Q?启动Sphinx的searchd服务Q?<br /><strong>rake ultrasphinx:daemon:start</strong> <br /><br />对应的停止是  <strong>rake ultrasphinx:daemon:stop</strong><br /><br />9,启动webrick<br /><br />ok了。。?br />目下蝲Q?br />http://www.uushare.com/user/fl1429/file/2043752<br /><br />ref:<br />http://www.javaeye.com/topic/200065?page=1<br />http://github.com/fauna/ultrasphinx<br /><br /><br /><br /><br /><div id="wmqeeuq" class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=82f41e76-5bc6-8655-a78f-c09741217728" /></div><img src ="http://www.aygfsteel.com/fl1429/aggbug/296066.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fl1429/" target="_blank">fl1429</a> 2009-09-22 17:46 <a href="http://www.aygfsteel.com/fl1429/archive/2009/09/22/296066.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rails sphinx + libmmseg + thinking_sphinx 全文?/title><link>http://www.aygfsteel.com/fl1429/archive/2009/09/22/296052.html</link><dc:creator>fl1429</dc:creator><author>fl1429</author><pubDate>Tue, 22 Sep 2009 09:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/fl1429/archive/2009/09/22/296052.html</guid><wfw:comment>http://www.aygfsteel.com/fl1429/comments/296052.html</wfw:comment><comments>http://www.aygfsteel.com/fl1429/archive/2009/09/22/296052.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fl1429/comments/commentRss/296052.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fl1429/services/trackbacks/296052.html</trackback:ping><description><![CDATA[环境: sphinx 0.9.8 rc2 + libmmseg 0.7.3 + thinking_sphinx 1.2.8 + ubuntu 8.1.0 Desktop version<br /> <br /> 效果预览Q?br /> 1Q?http://www.zikii.com/ q个|站 也是Z sphinx 实现?br /> 2Q我?br /> <img style="max-width: 800px;" src="http://www.aygfsteel.com/images/blogjava_net/fl1429/snapshot28.png" alt="" /><br /> <br /> <br /> ׃目需要,需要实现站内搜索,全文索和 中文分词 功能Q最后选型?sphinx + libmmseg + thinking_sphinx Q?折腾了好大一会,最后测试成?br /> sphinx 是俄国h开发的opensourse 搜烦引擎Q烦引速度很快Q?libmmseg 是中国h开发的中文分词E序Qthinking_sphinx 是封装调用sphinx的rails plugin<br /> <br /> 下面用到的所有资?打包下蝲Q?br /> http://www.uushare.com/user/fl1429/file/2043579<br /> <br /> 1Q项目的所有的源码~译安装 Q?全部Ud /root 下进?凡是出现权限不够的, 在命令前加上 sudo <br /> <br /> 2Q安?libmmseg<br /> <br /> ./configure<br /> make<br /> make install <br /> 具体可以参考:<br /> http://www.coreseek.cn/opensource/mmseg/<br /> <br /> 3,安装 ruby 扩展Q进?mmseg ruby 目录?Q注意最后面有一个点Q?br /> <br /> cd ruby<br /> cp /usr/local/include/mmseg/*.h . <br /> <pre>cp ../src/*.h . <br /> <br /> cp ../src/css/*.h . <br /> ruby extconf.lin.rb<br /> make<br /> sudo make install<br /> 成功的话Q可以到irb下,试看看是否成功?br /> irb  <br /> require 'mmseg'<br /> 注意:如果在这一步出?且出错提CZؓQ?br /> <br /> css/UnigramCorpusReader.cpp:89: error: ’strncmp’ was not declared in this scope<br /> <br /> 则需手工~辑.src/css目录下UnigramCorpusReader.cpp 文g,在其W一行加?br /> <br /> #include <string.h><br /> <br /> 然后重新 make,卛_通过<br /> <br /> 4Q创典文?br /> <br /> q入 mmseg ?data 目录?br /> <br /> mmseg -u unigram.txt<br /> <br /> 把生成的文g名改?uni.lib<br /> <br /> 5,安装sphinx (把两个补丁放?解压??sphinx?<br /> <br /> cd sphinx-0.9.8-rc2<br /> <br /> patch -p1 < sphinx-0.98rc2.zhcn-support.patch Qpatch中文补丁<br /> <br /> patch -p1 < fix-crash-in-excerpts.patch # patch 防crash 补丁<br /> <br /> Copy mmseg安装文g夹下 src/csr_typedefs.h ?br /> <br /> src/css/SegmenterManager.h 到Sphinx安装文g夹下?src<br /> <br /> 文g夹下<br /> <br /> ./configure<br /> <br /> make<br /> sudo make install<br /> <br /> 注意Q如果在q一步出?br /> <br /> /usr/local/include/mmseg/freelist.h:22: error: ‘strlen’ was not declared in this scope<br /> <br /> 的错误,手工修改 /usr/local/mmseg/include/mmseg/freelist.h<br /> <br /> 在上面添?br /> #include <string.h><br /> <br /> 以上的配|?sphinx 支?中文分词 搜烦了。。?br /> <br /> Demo:<br /> <br /> 1,依照 Ryan 的例?配置 好基本的英文搜烦 <br /> <br /> http://railscasts.com/episodes/120-thinking-sphinx<br /> <br /> 2Q重Ҏ model 里的 定义索引 <br /> <br /> define_index do<br /> <br /> indexes content<br /> indexes :name, :sortable => true<br /> indexes comments.content, :as => :comment_content<br /> indexes [author.first_name, author.last_name], :as => :author_name<br /> has author_id, created_at<br /> end<br /> <br /> 3Q把上面生成?uni.lib 辞典文g 拷入 目?lib ?Q或者别的地方,看你配置里的charset_dictpath?不编译的话,可以用别人现成的uni.libQ?br /> <br /> 4Q在目?config 下新Z?sphinx.yml 文g<br /> development: &my_settings<br /> enable_star: 1<br /> min_prefix_len: 0<br /> min_infix_len: 2<br /> min_word_len: 1<br /> max_results: 70000<br /> morphology: none<br /> listen: localhost:3312<br /> charset_dictpath: /home/feng/RailsProject/Search/lib<br /> test:<br /> <<: *my_settings<br /> production:<br /> <<: *my_settings<br /> <br /> 上面?br /> /home/feng/RailsProject/Search/lib 可以写成 "#{RAILS_ROOT}/lib"<br /> 5Q生成配|文?br /> <br /> rake ts:config<br /> <br />  q样config 下会生成一?development.sphinx.conf 文g<br /> <br /> 扑ֈ charset_type = utf-8 把后?utf-8 修改?zh_cn.utf-8,q在下面d如下语句<br /> <br /> charset_dictpath = /home/feng/RailsProject/Search/lib Q你工程的lib路径Q?br /> <br /> 6Q徏立烦?br /> <br /> rake ts:index INDEX_ONLY=true<br /> 注意后面必须d INDEX_ONLY=true不然的话Q配|文件会被重|?q有不要写成 INDEX_ONLY = true<br /> <br /> <br /> 7Q启动sphinx服务<br /> <br /> rake ts:start<br /> 8,启动webrick <br /> <br /> 注意Qsphinx 必须在webrick的前?先启?br /> 我的demo目Q其实就是上面ryan 的,下蝲后可以看到我的具体配|,或者详l的内容<br /> <br /> http://www.uushare.com/user/fl1429/file/2043752<br /> <br /> <br /> ref:<br /> http://wiki.github.com/cogentsoft/zbs/180787<br /> http://www.javaeye.com/topic/431217?page=1<br /> http://www.javaeye.com/topic/196451<br /> http://blog.sina.com.cn/s/blog_412d58ec010090pq.html<br /> http://freelancing-god.github.com/ts/en/rake_tasks.html<img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=0d347e6f-bad1-84f2-b63e-e0138c655057" /></pre> <img src ="http://www.aygfsteel.com/fl1429/aggbug/296052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fl1429/" target="_blank">fl1429</a> 2009-09-22 17:15 <a href="http://www.aygfsteel.com/fl1429/archive/2009/09/22/296052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rails Jquery scrolling pagenationhttp://www.aygfsteel.com/fl1429/archive/2009/09/08/294299.htmlfl1429fl1429Tue, 08 Sep 2009 06:29:00 GMThttp://www.aygfsteel.com/fl1429/archive/2009/09/08/294299.htmlhttp://www.aygfsteel.com/fl1429/comments/294299.htmlhttp://www.aygfsteel.com/fl1429/archive/2009/09/08/294299.html#Feedback1http://www.aygfsteel.com/fl1429/comments/commentRss/294299.htmlhttp://www.aygfsteel.com/fl1429/services/trackbacks/294299.htmlruby 1.8.7 + Rails 2.1.0 + ubuntu 8.1.0

效果Q?br />http://www.dzone.com/links/index.html
http://flexidev.co.za/projects/jqpageflow/
http://paperc.de/documents

像上面的三个|站 的分|?是 scrolling pagination , 或??pageless pagination , endless pagination 用这些作为关键字Q?都会搜到很多的demoQ?q里我介l?一U?demoQ开?环境 ?rails Qof course , 你也可以在其他的q_使用。?br />
最?一直在用各U?分页的效果,一般都?ajax的, 例如前面 有介l了 prototype pagenation like twitter more button, q有 jquery ajax pagenation,q里又是 jquery scrolling pagination.....

Demo:

依赖?
will_paginate 插g
jquery.js
jquery.pageless.js

请到 下面?那个 ref link 里下

Action:

 def show
    @client_info = ClientInfo.find(params[:id])
    @comments = @client_info.comments.paginate(:per_page => 5 , :page => params[:page])

    if request.xhr?
      sleep(2) # make request a little bit slower to see loader :-)
      render :partial => 'comment' , :collection => @comments #q回 数据的partial
    end
end


解释 Q?server ?br />
helper method :

  # scrolling paginate like greader
  def pageless(total_pages, url=nil)
    opts = {
      :totalPages => total_pages,
      :url        => url
      #:loaderMsg  => '加蝲?..'
    }
    javascript_tag("$('#ajaxcomments').pageless(#{opts.to_json});")
  end


解释; 装了一?pageless ҎQ即实现 scrolling load 的的Ҏ

view: show.html.erb

..............
 <%= render :partial => 'wall' %>
.........................


解释 Q?前端 view


partial : _wall.html.erb

  <div class="wall" id ="ajaxcomments">
    <%- unless @client_info.comments.empty? -%>
      <%= render :partial => 'comment', :collection => @comments %>
    <%- end -%>
    <%= will_paginate @comments  ,
      :class => 'pagination',
      :previous_label => '&laquo; Previous',
      :next_label     => 'Next &raquo;',
      :renderer => 'WillPaginate::LinkRenderer' %> <%#= pageless must use will_paginate default style %>
    <%= pageless(@comments.total_pages, client_info_path(@client_info))  %>
  </div>

解释 Q?注意q里需?定义 一?idQ?q有 是 will_paginate 里的那些 参数 可以 不要 的,q里我加的,是因?我的 enviroment.rb ?加了 will_paginate ?配置Q如?你没有的话, 可以L?br />partial : _comment.html.erb
..............
<%= display comment.body %>
.........................

解释 Q?昄?内容

ref :
http://github.com/jney/jquery.pageless/tree/master




fl1429 2009-09-08 14:29 发表评论
]]>
Rails 很好用的?anchor)标记http://www.aygfsteel.com/fl1429/archive/2009/09/04/293927.htmlfl1429fl1429Fri, 04 Sep 2009 10:35:00 GMThttp://www.aygfsteel.com/fl1429/archive/2009/09/04/293927.htmlhttp://www.aygfsteel.com/fl1429/comments/293927.htmlhttp://www.aygfsteel.com/fl1429/archive/2009/09/04/293927.html#Feedback0http://www.aygfsteel.com/fl1429/comments/commentRss/293927.htmlhttp://www.aygfsteel.com/fl1429/services/trackbacks/293927.html
anchor 说白?是 q入 q个 面的时候, 定位到页面指定的部分Q例如一个个人用L界面Q最下面是留a版,如果你采用传l的方式提交留言的话Q那么就可以使用anchor定位提交后显C的位置

使用ҎQ?br />
1,url标识

a href = ............./network#Comment

network.html.erb
<a name="Comment"></a>

只要在network.erb.html 面中加?nbsp; 上面 那句话, 加在哪里 定位显C在哪了,或?指定一?div的idgؓ Comment 卛_

2Qrails 自带?:anchor 参数

url or path :
 user_path(@user,:anchor => 'Comment')
 user_url(@user,:anchor => 'Comment')

上面在rails RESTful 架构的程序中 l常 可见q种路径写法Q那么你可以利用 :anchor 来标识。。?br />


fl1429 2009-09-04 18:35 发表评论
]]>
rails jquery autocompletehttp://www.aygfsteel.com/fl1429/archive/2009/09/04/293880.htmlfl1429fl1429Fri, 04 Sep 2009 06:40:00 GMThttp://www.aygfsteel.com/fl1429/archive/2009/09/04/293880.htmlhttp://www.aygfsteel.com/fl1429/comments/293880.htmlhttp://www.aygfsteel.com/fl1429/archive/2009/09/04/293880.html#Feedback2http://www.aygfsteel.com/fl1429/comments/commentRss/293880.htmlhttp://www.aygfsteel.com/fl1429/services/trackbacks/293880.html

记得以前文章写过 rails autocomplete 插g的用方法, 那个是基?prototype 的, qxJquery用的最多。。所以必ȝjquery 实现 Q?q样?demo |上太多。。。。下面介l在rails 中的一Usolution

需要的Q?br /> jquery.js
jquery.complete.js
jquery.autocomplete.css

demo :

View:

<script>
  $(document).ready(function() {
    $("#recipient").autocomplete("/myaccount/res_message", {
      delay:10,
      minChar: 1,
      multiple: true,
      parse: function(data) {   
        return $.map(eval(data), function(item) {
          return {       
            data: item,
            value: item.name,
            result: item.name
          }
        });
      },
      formatItem: function(item) {
        return item.show;
      }
    }).result(function(e, item)
    {       
      $("#recipient").val(item.name);
    });
  });
</script>
<p><%= text_field_tag :recipient, :id => 'recipient' %></p>


解释Q?br /> #recipient 是对应的 id
/myaccount/res_message 对应h?url
item是参?br /> name ?show ?q回的变?br />
action:
  def res_message

    key = params[:q] if params[:q]
    @result = ClientInfo.get_login_name(key, '' , 'key')
   
    respond_to do |format|
      format.js # default : res_message.js.erb
    end
  end


解释 params[:q]  q 是默认向后台发送的关键字查?参数Q?q且默认的limit ?0 条数?br />
view:res_message.js.erb

<% if @result -%>
<% i=0 %>[
  <% for result in @result %>
     <% if i==0 %>
    {name:"<%= result.login_name %>",show:"<%= result.login_name + " " %>" + "<%= result.sure_name.nil? ? " " : result.sure_name + " " %>"}
    <% else %>
      ,{name:"<%= result.login_name %>",show:"<%= result.login_name + " " %>" + "<%= result.sure_name.nil? ? " " : result.sure_name + " " %>"}
    <% end %>
      <% i+=1 -%>
  <% end -%>]
<% end -%>

解释Q?该view 是返回的数据Q返回的是一个JSON数组

具体详细的可以参考:
http://docs.jquery.com/Plugins/Autocomplete
http://view.jquery.com/trunk/plugins/autocomplete/demo/


 



fl1429 2009-09-04 14:40 发表评论
]]>
Rails will_paginate ajax pagination with jqueryhttp://www.aygfsteel.com/fl1429/archive/2009/08/25/292522.htmlfl1429fl1429Tue, 25 Aug 2009 07:28:00 GMThttp://www.aygfsteel.com/fl1429/archive/2009/08/25/292522.htmlhttp://www.aygfsteel.com/fl1429/comments/292522.htmlhttp://www.aygfsteel.com/fl1429/archive/2009/08/25/292522.html#Feedback0http://www.aygfsteel.com/fl1429/comments/commentRss/292522.htmlhttp://www.aygfsteel.com/fl1429/services/trackbacks/292522.html
效果预览Q?br />

一?我们 在rails ?分页 will_paginate 是必不可的插gQ但?一般都是基?prototype 的,例如 ajax 式的分页Q?通过 RemoteLinkRenderer改变 css 样式{等Q都?Zprototype 的,但是 prototype ?Jquery 在项目中 l常遇到conflict Q这??让h 头疼Qrails 装好的ajaxҎQ好?都因?jquery 不能用,jquery 那么 ?前端 用户体验Q又因ؓ prototype 出现 conflict Q??Z?怺D杀 呢。。。。?br />
上面实现的核心思想 ?前端 通过 jquery?异步调用数据Q?后台 rails 通过 respond_to fotmat.js 的方?l予 q回数据。。?br />
Demo:

layout 中导入:
    <%= stylesheet_link_tag 'pagination' -%>
    <%= javascript_include_tag 'jquery' %>

pagination 是改变分늚样式


Action:

  def index
    @products = Product.paginate(:per_page => 10, :page => params[:page])
    respond_to do |format|
      format.html                        #default : index.html.erb
      format.js {:layout => false} # default : index.js.erb
    end
  end


View:

index.html.erb

<div id="product">
  <%= render :partial => 'products' %>
</div>

index.js.erb

$("#product").html("<%= escape_javascript(render :partial => "products") %>");

escape_javascript 是{义的意??<%=h %> q里?h 差不?br />
partial :
_products.html.erb

<script>

$(function() {
  $(".apple_pagination a").live("click", function() {
    $(".apple_pagination").html("Page is loading...");
    $.get(this.href, null, null, "script");
/* alert(this.href); */
    return false;
  });
});

</script>

<%= will_paginate @products , :class => 'apple_pagination' ,:previous_label => '<<上一?, :next_label => '下一?gt;>'   :renderer  => 'WillPaginate::LinkRenderer' %>

<% for product in @products  %>
  <div class="product">
    <h3>
      <%= link_to h(product.name), product %>
      <%= number_to_currency(product.price) %>
    </h3>
  </div>
<% end %>


上面?$(".apple_pagination a")  x will_paginate ?:class Q:renderer 使用的是will_paginate 的default 的,如果 enviroment.rb 中配|了will_paginate的样式,q里不写 :renderer 会出错!Q具体默认的参数 可以查看 will_paginate 下的 view_helpers.rb

全部 源码 下蝲Q?br /> http://www.uushare.com/user/fl1429/file/1941241

配置ҎQ?br /> 1Q进入工E, rake setup
2,ruby script/server
3,okay 成功 了。。。?br />
补充 Q?如果 一?面 有两处需?分页Q那?will_paginate 默认 情况?是同时翻늚。。那?如何 避免呢。。只需?l各自的 will_paginate 指定 不同?class 卛_  例如

will_paginate :

<%= will_paginate collection ,
  :class => "apple_paginate my_paginate",
  :previous_label => '<<上一?,
  :next_label => '下一?gt;>' ,
  :renderer  => 'WillPaginate::LinkRenderer'  %>

apple_paginate ?分页的真正的 cssQmy_paginate 是ؓ?区别 不同区的 分页 而加?br />

jquery script :
  jQuery(function() {
    jQuery(".my_paginate a").live("click", function() { 
      jQuery(".my_paginate").html("正在加蝲...");
      jQuery.get(this.href, {flag : "my" }, null, 'script');
      return false;
    });
  });

注意 jquery get Ҏ?四个参数 ?意义

ref:
http://railscasts.com/episodes/174-pagination-with-ajax
http://soylentfoo.jnewland.com/articles/2007/09/17/resource_this-dry-rails-resource-controllers
http://book.csdn.net/bookfiles/375/10037514155.shtml
http://stackoverflow.com/questions/1268383/format-js-with-rails





fl1429 2009-08-25 15:28 发表评论
]]>
ruby p , puts ?print 的区?/title><link>http://www.aygfsteel.com/fl1429/archive/2009/08/24/292387.html</link><dc:creator>fl1429</dc:creator><author>fl1429</author><pubDate>Mon, 24 Aug 2009 07:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/fl1429/archive/2009/08/24/292387.html</guid><wfw:comment>http://www.aygfsteel.com/fl1429/comments/292387.html</wfw:comment><comments>http://www.aygfsteel.com/fl1429/archive/2009/08/24/292387.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fl1429/comments/commentRss/292387.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fl1429/services/trackbacks/292387.html</trackback:ping><description><![CDATA[在rails 开发中Q最基本的检错误的ҎQ莫q于 puts ?p 的输Z。。。。那?它们有什么区别呢。。?br /><br />查了下, ?p 是经q?inspect 的,inspect的字面意思是 ?Q貌?是检?占位W?Q但是还是云里雾?br /><br />看两个demo<br /><br />oneQ?br /><br /> <font color="#3366ff">p "a", "\nb" <br />l果Q?br />"a"<br />"\nb"</font><br /><br />two:<br /><br /><font color="#3366ff">class SomeClass<br />  def initialize (arg_1, arg_2) # called with SomeClass.new<br />    @member_1 = arg_1<br />    @member_2 = arg_2<br />  end<br />  def print  <br />  puts "member_1: " + @member_1<br />    puts "member_2: " + @member_2<br />  end<br />end<br /><br />sc1 = SomeClass.new('foo', 'bar')<br />puts sc1.inspect<br />p sc1<br />puts sc1</font><br /><br />l果Q?br />#<SomeClass:0xb7c091b4 @member_1="foo", @member_2="bar"><br />#<SomeClass:0xb7c091b4 @member_1="foo", @member_2="bar"><br />#<SomeClass:0xb7c091b4><br /><br />q有是我们 最常用到的。。。查询数据库中一条数据记录集<br /><br /><font color="#3366ff">@post = BlogPost.find(params[:id])<br />    p @post<br />    puts @post</font><br />l果Q?br />#<BlogPost id: 18, blog_id: 30, topic_id: nil, client_info_id: nil, title: "试", body: "试试试试试试试试?..", blog_post_comments_count: 0, type: "BlogPost", created_at: "2009-08-24 03:56:27", updated_at: "2009-08-24 03:56:27"><br />#<BlogPost:0xb595b8b0><br /><br />q样 看v?更一目了然。。?p 把数据库中的 字段 和?都输?了, puts 只输?一?对象的标识。。?br /><br />refQ?br />http://www.adp-gmbh.ch/ruby/language/inspect.html<br />http://stackoverflow.com/questions/1255324/p-vs-puts-in-ruby<br />http://blog.chinaunix.net/u1/37038/showart_489434.html<br /><br /><br /><br /><div id="wmqeeuq" class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=718b3570-1a39-8380-a6f8-67230382eb82" /></div><img src ="http://www.aygfsteel.com/fl1429/aggbug/292387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fl1429/" target="_blank">fl1429</a> 2009-08-24 15:12 <a href="http://www.aygfsteel.com/fl1429/archive/2009/08/24/292387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ruby 中英文؜?截取字符?/title><link>http://www.aygfsteel.com/fl1429/archive/2009/08/24/292371.html</link><dc:creator>fl1429</dc:creator><author>fl1429</author><pubDate>Mon, 24 Aug 2009 06:23:00 GMT</pubDate><guid>http://www.aygfsteel.com/fl1429/archive/2009/08/24/292371.html</guid><wfw:comment>http://www.aygfsteel.com/fl1429/comments/292371.html</wfw:comment><comments>http://www.aygfsteel.com/fl1429/archive/2009/08/24/292371.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fl1429/comments/commentRss/292371.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fl1429/services/trackbacks/292371.html</trackback:ping><description><![CDATA[环境 Q?ruby 1.8.7 + rails 2.1.0 +  ubuntu 8.10<br /> ruby 在截?中文字符串时 l常出现q  。例如:<br /> <br /> <font color="#3366ff">a = "a?中文aaa"<br /> b = 'test'<br /> <br /> p a.size # 17 Q可以看Z个中文字W在ruby中是3个英文字W)<br /> p b.length # 4<br /> puts a.slice(0,13) # a?中�  slice method Q?是start下标处,13是lengthQ?/font><br /> <br /> 最后一个输出最?是ؕ码,在java中是unicode~码没有这个问题,所以我们需要{换下~码来解冟뀂?br /> <br /> 例如在rails?application_helper.rb 定义一个{换的Ҏ<br /> <br />   <font color="#3366ff">def cut_string(charset,src,start,length)<br />     require "iconv"<br />     @conv=Iconv.new("UTF-16",charset)<br />     @reverse_conv=Iconv.new(charset,"UTF-16")<br />     p_start=start.class==Fixnum&&start>=0<br />     p_length=length.class==Fixnum&&length>=0<br />     return "" unless src&&p_start&&p_length<br />     src_utf16=@conv.iconv(src)<br />     cutted_src_utf_16=src_utf16[2*start+2,2*length]<br />     @reverse_conv.iconv(cutted_src_utf_16)<br />   end</font><br /> <br /> view中用:<br /> <br /> <font color="#33ccff"><%<br />     a = 'a 试中?<br />     puts cut_string('UTF-8',a,0,4) # a ?br /> %></font><br /> <br /> ref:<br /> http://my.opera.com/sawpad/blog/show.dml/235183<br /> http://www.javaeye.com/topic/201531<br /> <br /> 补充Q?br /> 真伤心,之前截取字符Ԍ用上面的ҎQ还需要自己封装,自己转码解决Q没惛_rails已经把我们封装好了。。就?truncate Ҏ。。看了下源码真简单,只需要输出对应字W串的chars p决了Q源码:<br /> <br />         def truncate(text, length = 30, truncate_string = "...")<br />           if text<br />             l = length - truncate_string.chars.length<br />             chars = text.chars<br />             (chars.length > length ? chars[0...l] + truncate_string : text).to_s<br />           end<br />         end<br /> <br /> 使用demoQ?br /> <br /> <%<br /> a = 'test'<br /> b = '试中文'<br /> <br /> p truncate(a,2,'...') # "tes..."<br /> p truncate(b,2,'...') # "试?.."<br /> <br /> %><br /> <br /> <br /> 如果需要得到汉字的长度 可以使用 jcode ?里的 jlength<br /> <br /> demo:<br /> <br /> s = "试140字测?40字测?40字测?40字测?40字测?40字测?40字测?40字测?40字测?40字测?40字测?40字测?40字测?br />     140字测?40字测?40字测?40字测?40字测?40字测?40字测?40字测?40字测?"<br /> <br /> $KCODE='utf8'<br /> <br /> require 'jcode'<br /> <br /> p s.jsize<br /> <br /> p s.jlength<br /> <br /> ref:<br /> http://blog.guoshuang.com/?p=4769<br /> http://lifegoo.pluskid.org/?p=257<br /> <div id="wmqeeuq" class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=5716af9f-806e-8b9f-bdc2-771230498c1b" /></div> <img src ="http://www.aygfsteel.com/fl1429/aggbug/292371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fl1429/" target="_blank">fl1429</a> 2009-08-24 14:23 <a href="http://www.aygfsteel.com/fl1429/archive/2009/08/24/292371.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ƽԭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">պ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ݰ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ρɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ǿ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">Ͷ</a>| <a href="http://" target="_blank">ݳ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">߷</a>| <a href="http://" target="_blank">ӳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">۶</a>| <a href="http://" target="_blank">ʳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>