<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LetRails &#187; 插件</title>
	<atom:link href="http://www.letrails.cn/archives/category/%e6%8f%92%e4%bb%b6/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.letrails.cn</link>
	<description></description>
	<lastBuildDate>Sat, 06 Aug 2011 07:02:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Rails 图表解决方案汇总</title>
		<link>http://www.letrails.cn/archives/rails-chart-solutions/</link>
		<comments>http://www.letrails.cn/archives/rails-chart-solutions/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 12:03:21 +0000</pubDate>
		<dc:creator>Yuanyi ZHANG</dc:creator>
				<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.letrails.cn/?p=238</guid>
		<description><![CDATA[最近需要给抢座增加图表功能，于是对Rails的图表方案做了些调查，整理成这篇贴，希望对有同样需求的人有所帮助。 Google Chart Google Chart的优点是接口简单，容易上手，但是缺点也很明显，需要依赖Google的服务，在有些地方加载可能会存在速度问题，并且有被GFW的风险。 Google Chart的Rails插件很多，个人比较喜欢mattetti的googlecharts： googlecharts: http://github.com/mattetti/googlecharts gchartrb：http://code.google.com/p/gchartrb google-charts-on-rails：http://code.google.com/p/google-charts-on-rails/ gc4r：http://code.google.com/p/gc4r/ Google Visualization Google Visualization是Google Chart的升级版，Rails插件：http://github.com/mwarnock/rails-google-visualization-plugin Gruff Gruff是基于RMagick的Ruby绘图工具，功能强大，可扩展性和可定制性都非常好，不过由于Gruff需要在服务端实时生成图片，因此不适合实时展示数据。 Gruff还有一个JS封装bluff：http://bluff.jcoglan.com/ Flot Flot是一个jQuery插件，可以基于JS生成实时图表，如果你使用jQuery，那么Flot是个不错的选择。Flot有一个很好用的Rails插件插件Flotilla: http://github.com/joshuamiller/flotilla GNUPlot GNUPlot最初是为学术目的使用的数据可视化工具，但是现在也支持生成非交互式的2d和3d图形，如果你需要生成非常复杂的图形，那么可以试试gnuplot，GNUPlot有一个叫rgplot的rubygem可以使用：http://rgplot.rubyforge.org Ziya Ziya是一个Rails图表插件，可以生成非常漂亮和复杂的Flash图表，如果你不介意Flash，那么Ziya是个不错的选择。 Scruffy Scruffy是一个Rubygem，它的目标是帮你生成高质量的SVG和PNG图片，同Gruff一样，是一个服务端解决方案，不过Scruffy目前似乎已经停止开发了，首页的图片在Firefox和Chrome下均无法显示。 Highcharts 感谢dxiao同学留言，Highchars是一个纯JS的图表库，但是实现的效果却和Flash不相上下，相当绚丽，兼容性也很不错，并且有一个Rails的插件可以用，值得一试。 Raphaeljs 感谢Quake推荐，Raphael也是一个非常不错的JS绘图控件，他的核心库是raphaeljs，一个画图工具，详情可以看官方网站 : http://g.raphaeljs.com/ Flash 除了上面介绍的Ziya，Flash图表解决方案还有很多，下面列举几个对Rails支持比较好的： Open Flash Chart II：http://pullmonkey.com/projects/open_flash_chart2/ Fusion Charts Free：http://www.fusioncharts.com/free/ maani.us xml/swf charts：http://www.maani.us/xml_charts/ amcharts： http://www.amcharts.com/，archarts有一个很好用的Rails插件：ambling 参考：http://stackoverflow.com/questions/87561/what-is-your-preferred-way-to-produce-charts-in-a-ruby-on-rails-web-application<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="升级到Rails 3 Beta" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-chart-solutions%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails性能优化简明指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-performance-optimization-guide%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-chart-solutions%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251308.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails性能优化简明指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails线下活动" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-event-oct-20%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-chart-solutions%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/18/8865598.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails线下活动</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26活动照片，PPT及视频" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting-picture-presentation-videos%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-chart-solutions%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/18/8798467.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26活动照片，PPT及视频</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>最近需要给<a href="http://www.51qiangzuo.com/">抢座</a>增加图表功能，于是对Rails的图表方案做了些调查，整理成这篇贴，希望对有同样需求的人有所帮助。</p>
<p><a href="http://code.google.com/apis/chart/">Google Chart</a></p>
<p>Google Chart的优点是接口简单，容易上手，但是缺点也很明显，需要依赖Google的服务，在有些地方加载可能会存在速度问题，并且有被GFW的风险。</p>
<p>Google Chart的Rails插件很多，个人比较喜欢mattetti的googlecharts：</p>
<ul>
<li>googlecharts: <a href="googlecharts:  github.com/mattetti/googlecharts"> http://github.com/mattetti/googlecharts</a></li>
<li>gchartrb：<a href="http://code.google.com/p/gchartrb">http://code.google.com/p/gchartrb</a></li>
<li>google-charts-on-rails：<a href="http://code.google.com/p/google-charts-on-rails/">http://code.google.com/p/google-charts-on-rails/</a></li>
<li>gc4r：<a href="http://code.google.com/p/google-charts-on-rails/">http://code.google.com/p/gc4r/</a></li>
</ul>
<p><a href="http://code.google.com/apis/visualization">Google Visualization</a></p>
<p>Google Visualization是Google Chart的升级版，Rails插件：<a href="http://github.com/mwarnock/rails-google-visualization-plugin">http://github.com/mwarnock/rails-google-visualization-plugin</a></p>
<p><a href="http://nubyonrails.com/pages/gruff">Gruff</a></p>
<p>Gruff是基于RMagick的Ruby绘图工具，功能强大，可扩展性和可定制性都非常好，不过由于Gruff需要在服务端实时生成图片，因此不适合实时展示数据。</p>
<p>Gruff还有一个JS封装bluff：<a href="http://bluff.jcoglan.com/">http://bluff.jcoglan.com/</a></p>
<p><a href="http://code.google.com/p/flot/">Flot</a></p>
<p>Flot是一个jQuery插件，可以基于JS生成实时图表，如果你使用jQuery，那么Flot是个不错的选择。Flot有一个很好用的Rails插件插件Flotilla: <a href="http://github.com/joshuamiller/flotilla">http://github.com/joshuamiller/flotilla</a></p>
<p><a href="http://www.gnuplot.info/">GNUPlot</a></p>
<p>GNUPlot最初是为学术目的使用的数据可视化工具，但是现在也支持生成非交互式的2d和3d图形，如果你需要生成非常复杂的图形，那么可以试试gnuplot，GNUPlot有一个叫rgplot的rubygem可以使用：<a href="http://rgplot.rubyforge.org">http://rgplot.rubyforge.org</a></p>
<p><a href="http://ziya.liquidrail.com/">Ziya</a></p>
<p>Ziya是一个Rails图表插件，可以生成非常漂亮和复杂的Flash图表，如果你不介意Flash，那么Ziya是个不错的选择。</p>
<p><a href="http://scruffy.rubyforge.org/">Scruffy</a></p>
<p>Scruffy是一个Rubygem，它的目标是帮你生成高质量的SVG和PNG图片，同Gruff一样，是一个服务端解决方案，不过Scruffy目前似乎已经停止开发了，首页的图片在Firefox和Chrome下均无法显示。</p>
<p>Highcharts</p>
<p>感谢dxiao同学留言，<a href="http://www.highcharts.com/">Highchars</a>是一个纯JS的图表库，但是实现的效果却和Flash不相上下，相当绚丽，兼容性也很不错，并且有一个<a href="http://github.com/loudpixel/highcharts-rails">Rails的插件</a>可以用，值得一试。</p>
<p><strong>Raphaeljs</strong></p>
<p>感谢Quake推荐，Raphael也是一个非常不错的JS绘图控件，他的核心库是raphaeljs，一个画图工具，详情可以看官方网站 : <a rel="nofollow" href="http://g.raphaeljs.com/">http://g.raphaeljs.com/</a></p>
<p>Flash</p>
<p>除了上面介绍的Ziya，Flash图表解决方案还有很多，下面列举几个对Rails支持比较好的：</p>
<ul>
<li>Open Flash Chart II：<a href="http://pullmonkey.com/projects/open_flash_chart2/">http://pullmonkey.com/projects/open_flash_chart2/</a></li>
<li>Fusion Charts Free：<a href="http://www.fusioncharts.com/free/">http://www.fusioncharts.com/free/</a></li>
<li>maani.us xml/swf charts：<a href="http://www.maani.us/xml_charts/">http://www.maani.us/xml_charts/</a></li>
<li>amcharts： <a href="http://www.amcharts.com/">http://www.amcharts.com/</a>，archarts有一个很好用的Rails插件：<a href="http://ambling.rubyforge.org/">ambling</a></li>
</ul>
<p>参考：<a href="http://stackoverflow.com/questions/87561/what-is-your-preferred-way-to-produce-charts-in-a-ruby-on-rails-web-application">http://stackoverflow.com/questions/87561/what-is-your-preferred-way-to-produce-charts-in-a-ruby-on-rails-web-application</a></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="升级到Rails 3 Beta" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-chart-solutions%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails性能优化简明指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-performance-optimization-guide%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-chart-solutions%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251308.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails性能优化简明指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails线下活动" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-event-oct-20%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-chart-solutions%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/18/8865598.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails线下活动</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26活动照片，PPT及视频" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting-picture-presentation-videos%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-chart-solutions%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/18/8798467.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26活动照片，PPT及视频</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.letrails.cn/archives/rails-chart-solutions/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>ar_mailer Rails 3 插件</title>
		<link>http://www.letrails.cn/archives/ar_mailer-rails-3-plugi/</link>
		<comments>http://www.letrails.cn/archives/ar_mailer-rails-3-plugi/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 09:52:04 +0000</pubDate>
		<dc:creator>Yuanyi ZHANG</dc:creator>
				<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.letrails.cn/?p=205</guid>
		<description><![CDATA[ar_mailer是个很不错的邮件发送插件，工作原理是将邮件发送分为两部分，首先将邮件保存到数据库，然后在调用后台程序实现异步发送，可惜的是目前还不支持Rails 3，于是花了一个下午，将它移植到了Rails 3，这就是：ar_mailer_rails3。 安装 sudo gem install ar_mailer_rails 使用 script/rails generate ar_mailer_rails3 Email 你也可以将Email替换为其它名字，邮件将会被保存到这个Model中。 Generator会自动生成一个initializer： # config/initializers/ar_mailer.rb ActionMailer::Base.add_delivery_method :active_record, &#160;&#160;&#160;&#160;ArMailerRails3::ActiveRecord, :email_class => Email ActionMailer::Base.delivery_method = :active_record 如果你不希望所有Mailer都使用ActiveRecord发送，也可以在Mailer中单独定义： class MyMailer < ActionMailer::Base &#160;&#160; self.delivery_method = :active_record end 命令行的使用方式和ar_mailer是一样的，只不过为了和ar_mailer 2保持兼容，命令行的程序变成了ar_mailer_rails3: $ ar_sendmail_rails3 -h 详细的使用方法可参看这里<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="升级到Rails 3 Beta" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Far_mailer-rails-3-plugi%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails线下活动" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-event-oct-20%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Far_mailer-rails-3-plugi%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/18/8865598.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails线下活动</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails性能优化简明指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-performance-optimization-guide%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Far_mailer-rails-3-plugi%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251308.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails性能优化简明指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26活动照片，PPT及视频" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting-picture-presentation-videos%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Far_mailer-rails-3-plugi%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/18/8798467.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26活动照片，PPT及视频</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><a href="http://seattlerb.org/ar_mailer">ar_mailer</a>是个很不错的邮件发送插件，工作原理是将邮件发送分为两部分，首先将邮件保存到数据库，然后在调用后台程序实现异步发送，可惜的是目前还不支持Rails 3，于是花了一个下午，将它移植到了Rails 3，这就是：<a href="http://github.com/yzhang/ar_mailer_rails3">ar_mailer_rails3</a>。</p>
<p>安装</p>
<p>sudo gem install ar_mailer_rails</p>
<p>使用</p>
<p>script/rails generate ar_mailer_rails3 Email</p>
<p>你也可以将Email替换为其它名字，邮件将会被保存到这个Model中。</p>
<p>Generator会自动生成一个initializer：</p>
<p class="code"><code class="ruby"><br />
# config/initializers/ar_mailer.rb<br />
ActionMailer::Base.add_delivery_method :active_record,<br />
&nbsp;&nbsp;&nbsp;&nbsp;ArMailerRails3::ActiveRecord, :email_class => Email<br />
ActionMailer::Base.delivery_method = :active_record<br />
</code></p>
<p>如果你不希望所有Mailer都使用ActiveRecord发送，也可以在Mailer中单独定义：</p>
<p class="code"><code class="ruby"><br />
class MyMailer < ActionMailer::Base<br />
&nbsp;&nbsp; self.delivery_method = :active_record<br />
end<br />
</code></p>
<p>命令行的使用方式和ar_mailer是一样的，只不过为了和ar_mailer 2保持兼容，命令行的程序变成了ar_mailer_rails3:</p>
<p>$ ar_sendmail_rails3 -h</p>
<p>详细的使用方法可<a href="http://github.com/adzap/ar_mailer">参看这里</a></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="升级到Rails 3 Beta" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Far_mailer-rails-3-plugi%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails线下活动" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-event-oct-20%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Far_mailer-rails-3-plugi%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/18/8865598.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails线下活动</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails性能优化简明指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-performance-optimization-guide%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Far_mailer-rails-3-plugi%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251308.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails性能优化简明指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26活动照片，PPT及视频" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting-picture-presentation-videos%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Far_mailer-rails-3-plugi%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/18/8798467.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26活动照片，PPT及视频</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.letrails.cn/archives/ar_mailer-rails-3-plugi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>豆瓣API Rails 插件</title>
		<link>http://www.letrails.cn/archives/douban-api-rails-plugin/</link>
		<comments>http://www.letrails.cn/archives/douban-api-rails-plugin/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 08:41:19 +0000</pubDate>
		<dc:creator>Yuanyi ZHANG</dc:creator>
				<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.letrails.cn/?p=199</guid>
		<description><![CDATA[目前只支持Rails 3 beta，地址：http://github.com/yzhang/douban 安装 $ gem install douban 使用 1. 修改Gemfile: gem 'douban', :require => 'oauth' require 'douban' 2. 运行generator $ script/rails generate douban 3. 修改config/douban.yml, 并在ApplicationController中包含DoubanHelper: class ApplicationController &#160;&#160;include DoubanHelper end 4. 然后在你的application layout中加入： &#60;% if douban_authorized? %&#62; &#160;&#160;&#60;%= link_to '注销豆瓣登录', douban_logout_path %&#62; &#60;% else %&#62; &#160;&#160;&#60;%= link_to "使用豆瓣帐号登录", douban_login_path %&#62; &#60;% end %&#62; [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="升级到Rails 3 Beta" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fdouban-api-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails性能优化简明指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-performance-optimization-guide%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fdouban-api-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251308.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails性能优化简明指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails Templates" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-templates%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fdouban-api-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails Templates</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26线下活动" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fdouban-api-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/09/3251440.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26线下活动</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>目前只支持Rails 3 beta，地址：<a href="http://github.com/yzhang/douban">http://github.com/yzhang/douban</a></p>
<p>安装</p>
<p>$ gem install douban</p>
<p>使用</p>
<p>1. 修改Gemfile:</p>
<p class="code"><code class="ruby"><br />
gem 'douban', :require => 'oauth'<br />
require 'douban'<br />
</code></p>
<p>2. 运行generator</p>
<p>$ script/rails generate douban</p>
<p>3. 修改config/douban.yml, 并在ApplicationController中包含DoubanHelper:</p>
<p class="code"><code class="ruby"><br />
class ApplicationController<br />
&nbsp;&nbsp;include DoubanHelper<br />
end<br />
</code></p>
<p>4. 然后在你的application layout中加入：</p>
<p class="code"><code class="ruby"><br />
&lt;% if douban_authorized? %&gt;<br />
&nbsp;&nbsp;&lt;%= link_to '注销豆瓣登录', douban_logout_path %&gt;<br />
&lt;% else %&gt;<br />
&nbsp;&nbsp;&lt;%= link_to "使用豆瓣帐号登录", douban_login_path %&gt;<br />
&lt;% end %&gt;<br />
</code></p>
<p>还可以使用下面的Helper:</p>
<ul>
<li>douban_auth_or_login_required, 方便和RESTFUL_AUTH一起使用</li>
<li>douban_auth_required, 可以作为before_filter使用</li>
</ul>
<p>5. 要访问用户资源，可以调用：</p>
<p class="code"><code class="ruby"><br />
douban.get('/people/yzhang')<br />
douban.post('/reviews', review)<br />
</code></p>
<p>6. 要验证用户是否已授权，可以调用:</p>
<p class="code"><code class="ruby"><br />
douban.authorized?<br />
=> true  # 如果已经获得access token<br />
</code></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="升级到Rails 3 Beta" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fdouban-api-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails性能优化简明指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-performance-optimization-guide%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fdouban-api-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251308.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails性能优化简明指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails Templates" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-templates%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fdouban-api-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails Templates</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26线下活动" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fdouban-api-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/09/3251440.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26线下活动</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.letrails.cn/archives/douban-api-rails-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>快钱Rails插件</title>
		<link>http://www.letrails.cn/archives/kuaiqian-99bill-rails-plugin/</link>
		<comments>http://www.letrails.cn/archives/kuaiqian-99bill-rails-plugin/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 10:47:59 +0000</pubDate>
		<dc:creator>Yuanyi ZHANG</dc:creator>
				<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.letrails.cn/?p=166</guid>
		<description><![CDATA[演示站点：http://kqdemo.zaituu.com 演示代码：http://github.com/yzhang/kuaiqian_demo 插件地址：http://github.com/yzhang/kuaiqian 安装 $ script/plugin install git://github.com/yzhang/kuaiqian.git 使用 1. 安装完成后，插件会自动在你的应用的config目录创建一个kuaiqian.yml文件，默认是快钱提供的测试帐号（关于测试帐号的使用方法请参看测试章节）。将kuaiqian.yml中的商户ID和密钥替换为快钱提供给你的真实ID和密钥然后进行下一步。 2. 下面的代码会创建一笔新订单： @request = Kuaiqian::Request.new('产品名称', # 产品名称 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1, # 订单ID，必须全局唯一 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Time.now.strftime("%Y%m%d%H%M%S"), # 订单生成时间，格式为20091104174132 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;4500, # 订单金额，以分为单位 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'http://return', # 通知地址，用户支付成功后快钱会通过此地址通知商户支付结果 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'00', # 支付类型，00显示所有方式，10只显示银行卡方式，11只显示电话银行方式，12只显示快钱帐户支付方式，13只显示线下方式 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'attach') #自定义数据，会在返回URL中原样返回 redirect_to @request.url 上面的代码会将用户重定向到快钱的支付页面。 3. 在用户完成支付后，快钱会调用你在支付请求中提供的返回URL： @response = Kuaiqian::Response.new(params) if @response.successful? &#160;&#160;# 支付成功 else &#160;&#160;# 支付失败 end 注意，快钱可能会多次调用你的返回URL，并将结果展现给用户，因此你的代码要考虑多次执行后的输出对用户的有好度。 同时Response还提供了以下方法供用户检查响应的有效性： pay_amount # [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="升级到Rails 3 Beta" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fkuaiqian-99bill-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails性能优化简明指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-performance-optimization-guide%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fkuaiqian-99bill-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251308.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails性能优化简明指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26线下活动" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fkuaiqian-99bill-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/09/3251440.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26线下活动</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails Cookie测试" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fhow-to-test-rails-cookie%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fkuaiqian-99bill-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails Cookie测试</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>演示站点：<a href="http://kqdemo.zaituu.com">http://kqdemo.zaituu.com</a><br />
演示代码：<a href="http://github.com/yzhang/kuaiqian_demo">http://github.com/yzhang/kuaiqian_demo</a><br />
插件地址：<a href="http://github.com/yzhang/kuaiqian">http://github.com/yzhang/kuaiqian</a></p>
<p><strong>安装</strong></p>
<p class="code">
$ script/plugin install git://github.com/yzhang/kuaiqian.git
</p>
<p><strong>使用</strong></p>
<p>1. 安装完成后，插件会自动在你的应用的config目录创建一个kuaiqian.yml文件，默认是快钱提供的测试帐号（关于测试帐号的使用方法请参看测试章节）。将kuaiqian.yml中的商户ID和密钥替换为快钱提供给你的真实ID和密钥然后进行下一步。</p>
<p>2. 下面的代码会创建一笔新订单：</p>
<p class="code"><code class="ruby"><br />
@request = Kuaiqian::Request.new('产品名称', # 产品名称<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1, # 订单ID，必须全局唯一<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Time.now.strftime("%Y%m%d%H%M%S"), # 订单生成时间，格式为20091104174132<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4500, # 订单金额，以分为单位<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'http://return', # 通知地址，用户支付成功后快钱会通过此地址通知商户支付结果<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'00', # 支付类型，00显示所有方式，10只显示银行卡方式，11只显示电话银行方式，12只显示快钱帐户支付方式，13只显示线下方式<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'attach') #自定义数据，会在返回URL中原样返回<br />
redirect_to @request.url<br />
</code></p>
<p>上面的代码会将用户重定向到快钱的支付页面。</p>
<p>3. 在用户完成支付后，快钱会调用你在支付请求中提供的返回URL：</p>
<p class="code"><code class="ruby"><br />
@response = Kuaiqian::Response.new(params)<br />
if @response.successful?<br />
&nbsp;&nbsp;# 支付成功<br />
else<br />
&nbsp;&nbsp;# 支付失败<br />
end<br />
</code></p>
<p>注意，快钱可能会多次调用你的返回URL，并将结果展现给用户，因此你的代码要考虑多次执行后的输出对用户的有好度。</p>
<p>同时Response还提供了以下方法供用户检查响应的有效性：</p>
<p class="code"><code class="ruby"><br />
pay_amount # 用户实际支付金额<br />
bank_name # 银行名称<br />
bank_deal_id # 银行交易ID<br />
deal_id        # 订单在快钱系统中的ID<br />
order_id      # 订单ID<br />
order_time  # 订单时间<br />
order_amount # 订单金额<br />
fee              # 快钱收取的手续费，以分为单位<br />
deal_time    # 快钱对交易进行处理的时间<br />
ext1            # 用户自带的数据<br />
</code></p>
<p><strong>测试</strong></p>
<p>要使用快钱提供的测试商户ID和密钥，需要修改你的hosts文件，将快钱的域名指向测试服务器：</p>
<p>218.242.247.5 www.99bill.com</p>
<p>然后使用下面的帐号进行支付：</p>
<p>用户名：kquser02@sina.com <br />
密码：99bill</p>
<p>最后，必须也抱怨一下快钱，开发者社区没有忘记密码功能，提供的测试工具不能用，FAQ没有排版，所有问答都在一行，并且测试环境的信息不在开发文档里，而是在FAQ的最后一个问题里，实在是愁人的很。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="升级到Rails 3 Beta" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fkuaiqian-99bill-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails性能优化简明指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-performance-optimization-guide%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fkuaiqian-99bill-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251308.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails性能优化简明指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26线下活动" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fkuaiqian-99bill-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/09/3251440.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26线下活动</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails Cookie测试" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fhow-to-test-rails-cookie%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fkuaiqian-99bill-rails-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails Cookie测试</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.letrails.cn/archives/kuaiqian-99bill-rails-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>财付通Rails插件</title>
		<link>http://www.letrails.cn/archives/rails-plugin-for-tenpay/</link>
		<comments>http://www.letrails.cn/archives/rails-plugin-for-tenpay/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 03:52:14 +0000</pubDate>
		<dc:creator>yuanyi</dc:creator>
				<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.letrails.cn/?p=148</guid>
		<description><![CDATA[最近需要给(ZT)增加在线支付功能，比较了国内的各种支付方案，最后选择了财付通，申请比较简单而且没有年费，但是腾讯官方只提供了PHP，JSP和ASP的代码，只能自己写了一个Rails的。 安装 $ script/plugin install git://github.com/yzhang/tenpay.git 使用 1. 插件安装后，会在你的config目录下创建一个tenpay.yml文件（默认是腾讯提供的测试帐户，往这个帐户付款它居然真的就收了，虽然只是1分钱），你需要修改这个文件，填入你从腾讯申请的商户号（spid）和密钥（key）。 2. 下面的代码演示如何创建一个新交易: @request = Tenpay::Request.new('测试产品', # 产品名称 &#160;&#160;&#160;&#160;&#160;&#160;1, # 订单编号，需要保证全局唯一 &#160;&#160;&#160;&#160;&#160;&#160;4500, # 产品价格，以分为单位 &#160;&#160;&#160;&#160;&#160;&#160;'http://return', # 用户完成支付后返回的URL, 支持Get/Post &#160;&#160;&#160;&#160;&#160;&#160;request.remote_ip, #用户IP，用户production模式下检验用户，development模式忽略。 &#160;&#160;&#160;&#160;&#160;&#160;'attach data') # 商户数据，会原样传递给返回URL，可不填 redirect_to @request.url 用户访问这个action的时候会被引导到支付页面。 3. 用户完成支付后，需要返回商户页面，也就是你在请求中填写的返回URL，下面的代码用于验证请求是否有效： @response = Tenpay::Response.new(params) if @response.successful? &#160;&#160;# 支付成功 else &#160;&#160;# 不合法的请求或支付失败 end 目前还不支持查询接口，欢迎大家的意见和建议。<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="升级到Rails 3 Beta" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-plugin-for-tenpay%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails Templates" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-templates%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-plugin-for-tenpay%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails Templates</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails性能优化简明指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-performance-optimization-guide%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-plugin-for-tenpay%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251308.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails性能优化简明指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26线下活动" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-plugin-for-tenpay%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/09/3251440.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26线下活动</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>最近需要给<a href="http://zoomtype.info">(ZT)</a>增加在线支付功能，比较了国内的各种支付方案，最后选择了<a href="https://www.tenpay.com/">财付通</a>，申请比较简单而且没有年费，但是腾讯官方只提供了PHP，JSP和ASP的代码，只能自己写了一个<a href="http://github.com/yzhang/tenpay">Rails的</a>。</p>
<p><strong>安装</strong></p>
<p class="code"><code class="ruby"><br />
$ script/plugin install git://github.com/yzhang/tenpay.git<br />
</code></p>
<p><strong>使用</strong></p>
<p>1. 插件安装后，会在你的config目录下创建一个tenpay.yml文件（默认是腾讯提供的测试帐户，往这个帐户付款它居然真的就收了，虽然只是1分钱），你需要修改这个文件，填入你从腾讯申请的商户号（spid）和密钥（key）。</p>
<p>2. 下面的代码演示如何创建一个新交易:</p>
<p class="code"><code class="ruby"><br />
@request = Tenpay::Request.new('测试产品', # 产品名称<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1, # 订单编号，需要保证全局唯一<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4500, # 产品价格，以分为单位<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'http://return', # 用户完成支付后返回的URL, 支持Get/Post<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.remote_ip, #用户IP，用户production模式下检验用户，development模式忽略。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'attach data') # 商户数据，会原样传递给返回URL，可不填<br />
redirect_to @request.url</code></p>
<p>用户访问这个action的时候会被引导到支付页面。</p>
<p>3. 用户完成支付后，需要返回商户页面，也就是你在请求中填写的返回URL，下面的代码用于验证请求是否有效：</p>
<p class="code"><code class="ruby"><br />
@response = Tenpay::Response.new(params)<br />
if @response.successful?<br />
&nbsp;&nbsp;# 支付成功<br />
else<br />
&nbsp;&nbsp;# 不合法的请求或支付失败<br />
end</code></p>
<p>目前还不支持查询接口，欢迎大家的意见和建议。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="升级到Rails 3 Beta" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-plugin-for-tenpay%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails Templates" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-templates%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-plugin-for-tenpay%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails Templates</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails性能优化简明指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-performance-optimization-guide%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-plugin-for-tenpay%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251308.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails性能优化简明指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26线下活动" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-plugin-for-tenpay%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/09/3251440.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26线下活动</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.letrails.cn/archives/rails-plugin-for-tenpay/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>city_helper: 省市二级联动Select插件</title>
		<link>http://www.letrails.cn/archives/city-helper-a-plugin-provide-state-and-city-select/</link>
		<comments>http://www.letrails.cn/archives/city-helper-a-plugin-provide-state-and-city-select/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 04:01:25 +0000</pubDate>
		<dc:creator>yuanyi</dc:creator>
				<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.letrails.cn/archives/city-helper-a-plugin-provide-state-and-city-select</guid>
		<description><![CDATA[此插件已更新，请移步这里： http://www.letrails.cn/archives/city-helper-update-i18n-and-country-support/ city_helper提供了几个简单的helper来实现省及城市的二级联动select，目前只支持国内城市，经过测试的浏览器：FF3, Chrome 2 beta, IE7, Safari 4。 安装 $ script/plugin install git://github.com/yzhang/city_helper.git 使用 安装之后，你就可以在View中直接使用以下Helper了： state_select :user, :state # 选择省份 capital_select :user, :city # 选择省会城市 city_select :user, :city # 选择所有地级及地级以上城市 state_and_city_select :user, :state, :city # 省市二级联动select 当然，你也可以在FormBuilder中使用，同时还有一个不需要object的_tag版本： form.city_select :city city_select_tag :city 你也可以传递options给city_helper，参数定义同select： city_select :user, :city, options, html_options state_and_city_select :user, :state, :city, {:city => city_options, [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="RJS实现Select级联" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F65%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcity-helper-a-plugin-provide-state-and-city-select%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251428.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">RJS实现Select级联</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="CityHelper更新：增加国家和国际化支持" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcity-helper-update-i18n-and-country-support%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcity-helper-a-plugin-provide-state-and-city-select%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">CityHelper更新：增加国家和国际化支持</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="select层叠的AJAX实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F35%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcity-helper-a-plugin-provide-state-and-city-select%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251431.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">select层叠的AJAX实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="在Rails中创建多对多映射" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F34%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcity-helper-a-plugin-provide-state-and-city-select%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251550.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">在Rails中创建多对多映射</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><strong>此插件已更新，请移步这里：</strong><a href="http://www.letrails.cn/archives/city-helper-update-i18n-and-country-support/"> http://www.letrails.cn/archives/city-helper-update-i18n-and-country-support/</a></p>
<p>city_helper提供了几个简单的helper来实现省及城市的二级联动select，目前只支持国内城市，经过测试的浏览器：FF3, Chrome 2 beta, IE7,<br />
Safari 4。</p>
<p><strong>安装</strong></p>
<p class="code"><code class="ruby"><br />
$ script/plugin install git://github.com/yzhang/city_helper.git<br />
</code></p>
<p><strong>使用</strong><br />
安装之后，你就可以在View中直接使用以下Helper了：</p>
<p class="code"><code class="ruby"><br />
state_select :user, :state                       # 选择省份<br />
capital_select :user, :city                       # 选择省会城市<br />
city_select :user, :city                           # 选择所有地级及地级以上城市<br />
state_and_city_select :user, :state, :city # 省市二级联动select<br />
</code></p>
<p>当然，你也可以在FormBuilder中使用，同时还有一个不需要object的_tag版本：</p>
<p class="code"><code class="ruby"><br />
form.city_select :city<br />
city_select_tag :city<br />
</code></p>
<p>你也可以传递options给city_helper，参数定义同select：</p>
<p class="code"><code class="ruby"><br />
city_select :user, :city, options, html_options<br />
state_and_city_select :user, :state, :city, {:city => city_options, :state => state_options}, {:city => city_html_options, :state => state_html_options}</code></p>
<p>state_and_city_select稍微复杂一点，下面给个例子：</p>
<p class="code"><code class="ruby"><br />
state_and_city_select :user, :state, :city, {:state => {:include_blank => '请选择省'}, :city => {:include_blank => '请选择城市'}}<br />
</code></p>
<p><strong>TODO</strong></p>
<ol>
<li>支持其它国家城市及国际化</li>
<li>和country_select集成，实现三级联动</li>
</ol>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="RJS实现Select级联" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F65%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcity-helper-a-plugin-provide-state-and-city-select%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251428.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">RJS实现Select级联</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="CityHelper更新：增加国家和国际化支持" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcity-helper-update-i18n-and-country-support%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcity-helper-a-plugin-provide-state-and-city-select%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">CityHelper更新：增加国家和国际化支持</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="select层叠的AJAX实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F35%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcity-helper-a-plugin-provide-state-and-city-select%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251431.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">select层叠的AJAX实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Bash提示符显示Git分支" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshow-git-branch-in-bash-prompt%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcity-helper-a-plugin-provide-state-and-city-select%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/15/8702104.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Bash提示符显示Git分支</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.letrails.cn/archives/city-helper-a-plugin-provide-state-and-city-select/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>theme_support: 为Rails应用添加theme支持</title>
		<link>http://www.letrails.cn/archives/make-theme-support-works-under-rails-2-1-0/</link>
		<comments>http://www.letrails.cn/archives/make-theme-support-works-under-rails-2-1-0/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 10:39:18 +0000</pubDate>
		<dc:creator>yuanyi</dc:creator>
				<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.letrails.cn/archives/make-theme-support-works-under-rails-2-1-0</guid>
		<description><![CDATA[theme_support是Matt McCray写的一个为Rails应用增加类似Typo的theme管理的插件，功能类似于Typo，支持liquid和erb模板。 安装 $ script/plugin install http://mattmccray.com/svn/rails/plugins/theme_support 使用 1. 生成主题 $ script/generate theme [theme_name] 这将在你的Rails应用的跟目录下创建一个themes文件夹： app_root &#160;&#160;themes/ &#160;&#160;&#160;&#160;[theme_name] &#160;&#160;&#160;&#160;&#160;&#160;layouts/ 'images' &#160;&#160;add_named_route 'theme_stylesheets', "/themes/:theme/stylesheets/*filename", :controller=>'theme', :action=>'stylesheets' &#160;&#160;add_named_route 'theme_javascript', "/themes/:theme/javascript/*filename", :controller=>'theme', :action=>'javascript' &#160;&#160;add_route "/themes/*whatever", :controller=>'theme', :action=>'error' end 2. 然后修改actionview_ex.rb，将render_file改为如下定义： def render_file(template_path, use_full_path = true, local_assigns = {}) &#160;&#160;["#{RAILS_ROOT}/themes/#{controller.current_theme}/views", # for normal views &#160;&#160;&#160;&#160;"#{RAILS_ROOT}/themes/#{controller.current_theme}" # for layouts &#160;&#160; [...]<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fmake-theme-support-works-under-rails-2-1-0%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-templates%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fmake-theme-support-works-under-rails-2-1-0%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Rails Templates</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fmake-theme-support-works-under-rails-2-1-0%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Shanghai on Rails 7.26线下活动</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fhow-to-test-rails-cookie%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fmake-theme-support-works-under-rails-2-1-0%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Rails Cookie测试</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>theme_support是<a href="http://mattmccray.com">Matt McCray</a>写的一个为Rails应用增加类似Typo的theme管理的插件，功能类似于Typo，支持<a href="http://www.liquidmarkup.org/">liquid</a>和erb模板。</p>
<p><strong>安装</strong></p>
<p>$ script/plugin install http://mattmccray.com/svn/rails/plugins/theme_support</p>
<p><strong>使用</strong></p>
<p>1. 生成主题</p>
<p>$ script/generate theme [theme_name]</p>
<p>这将在你的Rails应用的跟目录下创建一个themes文件夹：</p>
<p>app_root<br />
&nbsp;&nbsp;themes/<br />
&nbsp;&nbsp;&nbsp;&nbsp;[theme_name]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layouts/         <- layout .rhtml or .liquid templates<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;images/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stylesheets/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;javascripts/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;views/           <- you can override application views<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;about.markdown<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preview.png</p>
<p>2. 然后你需要将原本在app/views目录下的模板文件移到themes/[theme_name]/views下，同时将layouts下的文件也移到模板中去，当然还有相关的CSS，JS以及图片等等。</p>
<p>3. 同时你需要将主题中的JS，CSS以及Images引用改为如下路径：</p>
<p>Image: /theme/:theme_name/images/:image_file<br />
JS: /theme/:theme_name/javascripts/:image_file<br />
CSS: /theme/:theme_name/stylesheets/:image_file</p>
<p>如果使用erb，你可以使用下面的helper：</p>
<ul>
<li>theme_image_tag(filename)</li>
<li>theme_image_path(filename)</li>
<li>theme_javascript_include_tag(filename)</li>
<li>theme_javascript_path(filename)</li>
<li>theme_stylesheet_link_tag(filename)</li>
<li>theme_stylesheet_path(filename)</li>
</ul>
<p>liquid也有一个helper：themeitem</p>
<p>&lt;link rel=&#8221;StyleSheet&#8221; href=&#8221;{% themeitem %} default.css {% endthemeitem %}&#8221; /&gt;</p>
<p>它被转换为：</p>
<p>&lt;link rel=&#8221;StyleSheet&#8221; href=&#8221;/themes/[current_theme]/stylesheets/default.css&#8221; /&gt;</p>
<p>4. 指定要使用的主题：</p>
<p class="code"><code class="ruby"><br />
class ApplicationController<br />
&nbsp;&nbsp;layout 'fire'<br />
&nbsp;&nbsp;theme 'demo'<br />
end</code></p>
<p>你也可以在filter中根据当前用户的设置来动态决定使用那个theme：</p>
<p class="code"><code class="ruby"><br />
class ApplicationController<br />
&nbsp;&nbsp;before_filter :set_theme<br />
&nbsp;&nbsp;def set_theme<br />
&nbsp;&nbsp;&nbsp;&nbsp;theme current_user.theme<br />
&nbsp;&nbsp;end<br />
end</code></p>
<p><strong>Rails 2.1</strong></p>
<p>如果你使用Rails 2.1，那么你还得多做一点工作:</p>
<p>1. 首先修改routeset_ex.rb，将draw和create_theme_routes改为如下定义：</p>
<p class="code"><code class="ruby"><br />
def draw<br />
&nbsp;&nbsp;old_routes = @routes<br />
&nbsp;&nbsp;@routes = []<br />
&nbsp;&nbsp;begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;create_theme_routes<br />
&nbsp;&nbsp;&nbsp;&nbsp;yield Mapper.new(self)<br />
&nbsp;&nbsp;&nbsp;&nbsp;install_helpers<br />
&nbsp;&nbsp;rescue<br />
&nbsp;&nbsp;&nbsp;&nbsp;@routes = old_routes<br />
&nbsp;&nbsp;&nbsp;&nbsp;raise<br />
&nbsp;&nbsp;end<br />
end<br />
def create_theme_routes<br />
&nbsp;&nbsp;# Added patch from D.J. Vogel that changes <tt>:filename</tt> to <tt>*filename</tt>... allowing sub-folders<br />
&nbsp;&nbsp;add_named_route 'theme_images', "/themes/:theme/images/*filename", :controller=>'theme', :action=>'images'<br />
&nbsp;&nbsp;add_named_route 'theme_stylesheets', "/themes/:theme/stylesheets/*filename", :controller=>'theme', :action=>'stylesheets'<br />
&nbsp;&nbsp;add_named_route 'theme_javascript', "/themes/:theme/javascript/*filename", :controller=>'theme', :action=>'javascript'<br />
&nbsp;&nbsp;add_route "/themes/*whatever", :controller=>'theme', :action=>'error'<br />
end</code></p>
<p>2. 然后修改actionview_ex.rb，将render_file改为如下定义：</p>
<p class="code"><code class="ruby"><br />
def render_file(template_path, use_full_path = true, local_assigns = {})<br />
&nbsp;&nbsp;["#{RAILS_ROOT}/themes/#{controller.current_theme}/views",    # for normal views<br />
&nbsp;&nbsp;&nbsp;&nbsp;"#{RAILS_ROOT}/themes/#{controller.current_theme}"         # for layouts<br />
&nbsp;&nbsp; ].each do |prefix|<br />
&nbsp;&nbsp;&nbsp;&nbsp;@finder.prepend_view_path(prefix)<br />
&nbsp;&nbsp;end<br />
&nbsp;&nbsp;__render_file(template_path, use_full_path, local_assigns)<br />
end</code></p>
<p>3. 如果还有问题，欢迎留言，可能我漏掉了什么。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fmake-theme-support-works-under-rails-2-1-0%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-templates%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fmake-theme-support-works-under-rails-2-1-0%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Rails Templates</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fmake-theme-support-works-under-rails-2-1-0%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Shanghai on Rails 7.26线下活动</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fhow-to-test-rails-cookie%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fmake-theme-support-works-under-rails-2-1-0%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Rails Cookie测试</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.letrails.cn/archives/make-theme-support-works-under-rails-2-1-0/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ajax Rating: 简易打分插件</title>
		<link>http://www.letrails.cn/archives/ajax-rating-plugin/</link>
		<comments>http://www.letrails.cn/archives/ajax-rating-plugin/#comments</comments>
		<pubDate>Thu, 29 May 2008 08:49:24 +0000</pubDate>
		<dc:creator>yuanyi</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.letrails.cn/archives/ajax-rating-plugin</guid>
		<description><![CDATA[刚完成的一个小插件，比较粗糙，欢迎多提意见。 安装 $ cd vendor/plugins $ git clone git://github.com/yzhang/ajax_rating.git 使用 在你要评分的model中添加acts_as_ratable，比如post： class Post &#60; ActiveRecord::Base &#160;&#160; :acts_as_ratable end 这为post增加了如下方法： rating，当前post的平均得分 rating_count，评分人数 在可以打分的Model中添加acts_as_rater，比如user： class User &#60; ActiveRecord::Base &#160;&#160; :acts_as_rater end 这为User增加了如下方法： rating_on(ratable)，返回这个用户为某个对象打的分（1-5） 然后在view中调用： rating_tag(rater, ratable) rater就是打分者，ratable则是被评分的对象，如果rater为nil，则用户只能看到分数，但不能打分。 如果需要自定义外观，可以修改rating.css和images下的star123.png，关于CSS的原理说明请参看（十分对不起原作者，找不到原始出处）：http://www.viphot.com/InfoView/Article_285645.html 如果为了安全考虑，需要限制只有当前登录用户可以打分，可以通过定义RatingsController#current_rater实现： class RatingsController &#60; ActiveController::Base &#160;&#160; :before_filter :login_required &#160;&#160;def current_rater &#160;&#160;&#160;&#160;current_user &#160;&#160;end end 这样客户端传递的rater参数将失去作用。 完整例子 1. 创建demo： $ rails [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="AJAX分页(paginate)" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F07-10-25-ajax-will-paginate%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fajax-rating-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">AJAX分页(paginate)</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="select层叠的AJAX实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F35%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fajax-rating-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251431.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">select层叠的AJAX实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="has_many_polymorphs：简化多对多映射" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F49%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fajax-rating-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251544.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">has_many_polymorphs：简化多对多映射</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26线下活动" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fajax-rating-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/09/3251440.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26线下活动</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>刚完成的一个小插件，比较粗糙，欢迎多提意见。</p>
<p><strong>安装</strong></p>
<p>$ cd vendor/plugins<br />
$ git clone <a href="http://github.com/yzhang/ajax_rating/tree/master">git://github.com/yzhang/ajax_rating.git</a></p>
<p><strong>使用</strong></p>
<p>在你要评分的model中添加acts_as_ratable，比如post：</p>
<p class="code"><code class="ruby"><br />
class Post &lt; ActiveRecord::Base<br />
&nbsp;&nbsp; :acts_as_ratable<br />
end</code></p>
<p>这为post增加了如下方法：</p>
<ol>
<li>rating，当前post的平均得分</li>
<li>rating_count，评分人数</li>
</ol>
<p>在可以打分的Model中添加acts_as_rater，比如user：</p>
<p class="code"><code class="ruby"><br />
class User &lt; ActiveRecord::Base<br />
&nbsp;&nbsp; :acts_as_rater<br />
end</code></p>
<p>这为User增加了如下方法：</p>
<ol>
<li>rating_on(ratable)，返回这个用户为某个对象打的分（1-5）</li>
</ol>
<p>然后在view中调用：</p>
<p>rating_tag(rater, ratable)</p>
<p>rater就是打分者，ratable则是被评分的对象，如果rater为nil，则用户只能看到分数，但不能打分。</p>
<p>如果需要自定义外观，可以修改rating.css和images下的star123.png，关于CSS的原理说明请参看（十分对不起原作者，找不到原始出处）：<a href="http://www.viphot.com/InfoView/Article_285645.html">http://www.viphot.com/InfoView/Article_285645.html</a></p>
<p>如果为了安全考虑，需要限制只有当前登录用户可以打分，可以通过定义RatingsController#current_rater实现：</p>
<p class="code"><code class="ruby"><br />
class RatingsController &lt; ActiveController::Base<br />
&nbsp;&nbsp; :before_filter :login_required<br />
&nbsp;&nbsp;def current_rater<br />
&nbsp;&nbsp;&nbsp;&nbsp;current_user<br />
&nbsp;&nbsp;end<br />
end</code></p>
<p>这样客户端传递的rater参数将失去作用。</p>
<p><strong>完整例子</strong></p>
<p>1. 创建demo：</p>
<p>$ rails ratable_demo<br />
$ cd ratable_demo</p>
<p>2. 安装RESTFul_Auth</p>
<p>$ git clone git://github.com/technoweenie/restful-authentication.git vendor/plugins/restful_authentication<br />
$ ./script/generate authenticated user sessions</p>
<p>3. 安装Ajax Rating</p>
<p>$ cd vendor/plugins<br />
$ git clone git://github.com/yzhang/ajax_rating.git<br />
$ cd ../../<br />
$ ./script/generate ratable</p>
<p>4. 创建打分对象</p>
<p>$ ./script/generate scaffold post title:string body:text<br />
$ rake db:migrate</p>
<p>5. 修改user.rb</p>
<p class="code"><code class="ruby"><br />
class User &lt; ActiveRecord::Base<br />
&nbsp;&nbsp; :acts_as_rater<br />
end<br />
</code></p>
<p>6. 修改post.rb</p>
<p class="code"><code class="ruby"><br />
class Post &lt; ActiveRecord::Base<br />
&nbsp;&nbsp;acts_as_ratable<br />
end<br />
</code></p>
<p>7. 修改 app/views/layout/posts.html.erb，包含Prototype和rating.css：</p>
<p class="code"><code class="ruby"><br />
&lt;%= stylesheet_link_tag  'scaffold', 'rating'  %&gt;<br />
&lt;%= javascript_include_tag :defaults %&gt;<br />
</code></p>
<p>8. 修改application.rb:</p>
<p class="code"><code class="ruby"><br />
include AuthenticatedSystem<br />
</code></p>
<p>9. 修改app/views/posts/show.html.erb:</p>
<p class="code"><code class="ruby"><br />
&lt;% if logged_in? -%&gt;<br />
&nbsp;&nbsp; &lt;%= rating_tag current_user, @post %&gt;<br />
&lt;% else -%&gt;<br />
&nbsp;&nbsp; &lt;%= rating_tag nil, @post %&gt;<br />
&nbsp;&nbsp; &lt;%= link_to 'login to rating this post', new_session_path %&gt;<br />
&lt;% end -%&gt;<br />
</code></p>
<p>启动server，打开浏览器到/posts，创建一个新的Post，应该就可以看到一个打分的标签了。</p>
<p><img src="http://lilac.greatweb.cn/rails/wp-content/uploads/2008/05/7-4.png" alt="7-4.png" /></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="AJAX分页(paginate)" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F07-10-25-ajax-will-paginate%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fajax-rating-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">AJAX分页(paginate)</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="select层叠的AJAX实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F35%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fajax-rating-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251431.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">select层叠的AJAX实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="谷歌字典Mac客户端" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fgoogle-dictionary-for-mac%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fajax-rating-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/09/21/32739215.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">谷歌字典Mac客户端</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="CSS缩放iframe实现大号Facebook like" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcss-zoom-facebook-like%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fajax-rating-plugin%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/15/8664174.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">CSS缩放iframe实现大号Facebook like</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.letrails.cn/archives/ajax-rating-plugin/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Engines，Generator以及Rails插件机制</title>
		<link>http://www.letrails.cn/archives/engines-generator-and-rails-plugin-system/</link>
		<comments>http://www.letrails.cn/archives/engines-generator-and-rails-plugin-system/#comments</comments>
		<pubDate>Mon, 05 May 2008 14:35:16 +0000</pubDate>
		<dc:creator>yuanyi</dc:creator>
				<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.letrails.cn/archives/engines-generator-and-rails-plugin-system</guid>
		<description><![CDATA[Engines的作用是允许将model，controller和view代码直接嵌入到plugin中，但这其实是同Rails的设计初衷相违背的，这也是为什么DHH反对Engines。Rails针对这种需求提出的解决方案是Generator，相比Generator，Engines让事情变得更简单了一些，使用Engines的好处是，你不再需要生成一堆你可能几百年都不会去看的代码到你的APP目录下，但缺点是一旦你需要对这些代码进行修改，你将不得不再次复制它们到你的app目录下，而且一般来说，这很难避免，并且最终的结果往往是你发现所有代码都需要修改，那为什么不在一开始就用generator将它们全部复制到你的APP目录下呢？ 事实上，Generator也不是个好方法，之所以要将代码复制到你的App目录下，而不是放在Plugin中，是因为你需要修改它，而且在大部分情况下你期望对这些生成代码的修改能够复用到不同的项目中，但是使用Generator，你无法复用对这部分代码的修改，而只能一遍遍的重复“生成－修改”的过程，或者从其它项目中copy生成的代码到新项目，但这是个繁琐的过程，John Long在06年的时候就注意到了这个问题，并且他发现Django的解决方案不错，他在05年底的时候帮助组织了Adrian Holovaty（Django之父）和DHH之间的一场讨论，本来他希望看到Django中的一些优秀思想被吸收到Rails中来，但是遗憾的是，这一幕没有发生，直到Rails 2.0，Rails的插件模式并没有发生什么大的变化。 Django的解决方案是将Plugin组织成一个个的mini app而不是Rails的插件，这些mini app同你的app是并列的，要加入一个新的mini app，只需要修改INSTALLED_APPS 即可： INSTALLED_APPS = ( &#160;&#160; &#8216;django.contrib.auth&#8217;, &#160;&#160; &#8216;django.contrib.contenttypes&#8217;, &#160;&#160; &#8216;django.contrib.sessions&#8217;, &#160;&#160; &#8216;django.contrib.sites&#8217;, &#160;&#160; &#8216;mysite.polls&#8217; ) 这样如果你对某个mini app做了修改，在下一个项目中，你只需要将这个mini app直接copy到新项目中即可。 实际上，将Rails的plugin变成Django的mini app也并不难，只需要将Plugin目录变成在development模式下每次重新加载，然后加强路由支持即可，当然更进一步，实际上应该将Rails的插件两类，包含MVC代码的和不包含MVC代码的，John Long已经在Radiant中实践了这个想法，他给包含MVC代码的插件起的名字是extensions。 不过就目前来说，如果你确定你不会修改Plugin中的代码（一般来说发生几率相当小），那么Engines是个不错的选择，否则还是Generator好一些。 参考: Rails Needs Something Better Than Engines Why engines and components are not evil but distracting<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="升级到Rails 3 Beta" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fengines-generator-and-rails-plugin-system%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails Templates" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-templates%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fengines-generator-and-rails-plugin-system%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails Templates</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails性能优化简明指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-performance-optimization-guide%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fengines-generator-and-rails-plugin-system%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251308.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails性能优化简明指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26活动照片，PPT及视频" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting-picture-presentation-videos%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fengines-generator-and-rails-plugin-system%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/18/8798467.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26活动照片，PPT及视频</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rails-engines.org/">Engines</a>的作用是允许将model，controller和view代码直接嵌入到plugin中，但这其实是同Rails的设计初衷相违背的，这也是<a href="http://weblog.rubyonrails.org/2005/11/11/why-engines-and-components-are-not-evil-but-distracting/">为什么DHH反对Engines</a>。Rails针对这种需求提出的解决方案是Generator，相比Generator，Engines让事情变得更简单了一些，使用Engines的好处是，你不再需要生成一堆你可能几百年都不会去看的代码到你的APP目录下，但缺点是一旦你需要对这些代码进行修改，你将不得不再次复制它们到你的app目录下，而且一般来说，这很难避免，并且最终的结果往往是你发现所有代码都需要修改，那为什么不在一开始就用generator将它们全部复制到你的APP目录下呢？</p>
<p>事实上，Generator也不是个好方法，之所以要将代码复制到你的App目录下，而不是放在Plugin中，是因为你需要修改它，而且在大部分情况下你期望对这些生成代码的修改能够复用到不同的项目中，但是使用Generator，你无法复用对这部分代码的修改，而只能一遍遍的重复“生成－修改”的过程，或者从其它项目中copy生成的代码到新项目，但这是个繁琐的过程，<a href="http://wiseheartdesign.com/">John Long</a>在06年的时候就注意到了这个问题，并且他发现<a href="http://www.djangoproject.com/">Django</a>的解决方案不错，他在05年底的时候帮助组织了Adrian Holovaty（Django之父）和DHH之间的一场讨论，本来他希望看到Django中的一些优秀思想被吸收到Rails中来，但是遗憾的是，这一幕没有发生，直到Rails 2.0，Rails的插件模式并没有发生什么大的变化。</p>
<p>Django的解决方案是将Plugin组织成一个个的mini app而不是Rails的插件，这些mini app同你的app是并列的，要加入一个新的mini app，只需要修改INSTALLED_APPS 即可：</p>
<p>INSTALLED_APPS = (<br />
&nbsp;&nbsp; &#8216;django.contrib.auth&#8217;,<br />
&nbsp;&nbsp; &#8216;django.contrib.contenttypes&#8217;,<br />
&nbsp;&nbsp; &#8216;django.contrib.sessions&#8217;,<br />
&nbsp;&nbsp; &#8216;django.contrib.sites&#8217;,<br />
&nbsp;&nbsp; &#8216;mysite.polls&#8217;<br />
)</p>
<p>这样如果你对某个mini app做了修改，在下一个项目中，你只需要将这个mini app直接copy到新项目中即可。</p>
<p>实际上，将Rails的plugin变成Django的mini app也并不难，只需要将Plugin目录变成在development模式下每次重新加载，然后加强路由支持即可，当然更进一步，实际上应该将Rails的插件两类，包含MVC代码的和不包含MVC代码的，John Long已经在Radiant中实践了这个想法，他给包含MVC代码的插件起的名字是extensions。</p>
<p>不过就目前来说，如果你确定你不会修改Plugin中的代码（一般来说发生几率相当小），那么Engines是个不错的选择，否则还是Generator好一些。</p>
<p>参考:</p>
<ul>
<li><a href="http://wiseheartdesign.com/2006/12/6/rails-needs-something-better-than-engines/">Rails Needs Something Better Than Engines</a></li>
<li><a href="http://weblog.rubyonrails.org/2005/11/11/why-engines-and-components-are-not-evil-but-distracting/">Why engines and components are not evil but distracting</a></li>
</ul>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="升级到Rails 3 Beta" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fupgrade-to-rails-3-beta%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fengines-generator-and-rails-plugin-system%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">升级到Rails 3 Beta</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails Templates" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-templates%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fengines-generator-and-rails-plugin-system%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails Templates</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Rails性能优化简明指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Frails-performance-optimization-guide%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fengines-generator-and-rails-plugin-system%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251308.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Rails性能优化简明指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26活动照片，PPT及视频" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting-picture-presentation-videos%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fengines-generator-and-rails-plugin-system%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/18/8798467.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26活动照片，PPT及视频</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.letrails.cn/archives/engines-generator-and-rails-plugin-system/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>自定义will_paginage输出</title>
		<link>http://www.letrails.cn/archives/custom-will-paginate-renderer/</link>
		<comments>http://www.letrails.cn/archives/custom-will-paginate-renderer/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 09:24:41 +0000</pubDate>
		<dc:creator>yuanyi</dc:creator>
				<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.letrails.cn/archives/custom-will-paginate-renderer</guid>
		<description><![CDATA[will_paginate是Rails中比较常用的分页插件，但是有时候我们可能想要自定义它的输出，这可以通过扩展WillPaginate::LinkRenderer类来实现，比如，下面的renderer将会去除Next和Previous链接（来自这里）： class CustomPaginationRenderer &#60; WillPaginate::LinkRenderer &#160;&#160;def to_html &#160;&#160;&#160;&#160;links = @options[:page_links] ? windowed_links : []     &#160;&#160;&#160;&#160;html = links.join(@options[:separator]) &#160;&#160;&#160;&#160;@options[:container] ? @template.content_tag(:div, html, html_attributes) : html &#160;&#160;end   end 要在view中使用这个自定义的renderer，只需要加上:renderer参数即可： &#60;%= will_paginate @items, :renderer =&#62; 'CustomPaginationRenderer' %&#62; 下面给出一个更复杂的自定义Renderer，它会在分页链接后显示一个文本框，以及一个‘Goto’按钮，允许用户直接跳转到某一页： class CustomPaginationRenderer &#60; WillPaginate::LinkRenderer &#160;&#160;@@id = 1 &#160;&#160;def to_html &#160;&#160;&#160;&#160;links = @options[:page_links] ? windowed_links : [] &#160;&#160;&#160;&#160;# previous/next buttons &#160;&#160;&#160;&#160;links.unshift page_link_or_span(@collection.previous_page, 'disabled', @options[:prev_label]) &#160;&#160;&#160;&#160;links.push    page_link_or_span(@collection.next_page,     'disabled', @options[:next_label]) &#160;&#160;&#160;&#160;html = links.join(@options[:separator]) &#160;&#160;&#160;&#160;html += goto_box &#160;&#160;&#160;&#160;@options[:container] ? @template.content_tag(:div, html, html_attributes) : html [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="AJAX分页(paginate)" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F07-10-25-ajax-will-paginate%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcustom-will-paginate-renderer%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">AJAX分页(paginate)</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Google Chart API: 基本上很强大" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F07-11-13-google-chart-api%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcustom-will-paginate-renderer%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251630.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Google Chart API: 基本上很强大</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Shanghai on Rails 7.26线下活动" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fshanghai-on-rails-726-meeting%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcustom-will-paginate-renderer%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/09/3251440.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Shanghai on Rails 7.26线下活动</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Railsify: 新的Rails插件仓库" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F61%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcustom-will-paginate-renderer%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251646.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Railsify: 新的Rails插件仓库</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><a href="http://errtheblog.com/posts/56-im-paginating-again">will_paginate</a>是Rails中比较常用的分页插件，但是有时候我们可能想要自定义它的输出，这可以通过扩展WillPaginate::LinkRenderer类来实现，比如，下面的renderer将会去除Next和Previous链接（来自<a href="http://zilkey.com/2008/3/16/rendering-will_paginate-links-without-previous-and-next-buttons" style="color: #551a8b" title="这里" id="sayg">这里</a>）：</p>
<p class="code"><code class="ruby">class CustomPaginationRenderer &lt; WillPaginate::LinkRenderer<br />
&nbsp;&nbsp;def to_html<br />
&nbsp;&nbsp;&nbsp;&nbsp;links = @options[:page_links] ? windowed_links : []    <br />
&nbsp;&nbsp;&nbsp;&nbsp;html = links.join(@options[:separator])<br />
&nbsp;&nbsp;&nbsp;&nbsp;@options[:container] ? @template.content_tag(:div, html, html_attributes) : html<br />
&nbsp;&nbsp;end  <br />
end<br />
</code></p>
<p>要在view中使用这个自定义的renderer，只需要加上:renderer参数即可：</p>
<p class="code"><code class="ruby"><br />
&lt;%= will_paginate @items, :renderer =&gt; 'CustomPaginationRenderer' %&gt;<br />
</code></p>
<p>下面给出一个更复杂的自定义Renderer，它会在分页链接后显示一个文本框，以及一个‘Goto’按钮，允许用户直接跳转到某一页：</p>
<p class="code"><code class="ruby"><br />
class CustomPaginationRenderer &lt; WillPaginate::LinkRenderer<br />
&nbsp;&nbsp;@@id = 1<br />
&nbsp;&nbsp;def to_html<br />
&nbsp;&nbsp;&nbsp;&nbsp;links = @options[:page_links] ? windowed_links : []<br />
&nbsp;&nbsp;&nbsp;&nbsp;# previous/next buttons<br />
&nbsp;&nbsp;&nbsp;&nbsp;links.unshift page_link_or_span(@collection.previous_page, 'disabled', @options[:prev_label])<br />
&nbsp;&nbsp;&nbsp;&nbsp;links.push    page_link_or_span(@collection.next_page,     'disabled', @options[:next_label])<br />
&nbsp;&nbsp;&nbsp;&nbsp;html = links.join(@options[:separator])<br />
&nbsp;&nbsp;&nbsp;&nbsp;html += goto_box<br />
&nbsp;&nbsp;&nbsp;&nbsp;@options[:container] ? @template.content_tag(:div, html, html_attributes) : html<br />
&nbsp;&nbsp;end<br />
&nbsp;&nbsp;private<br />
&nbsp;&nbsp;def goto_box<br />
&nbsp;&nbsp;&nbsp;&nbsp;@@id += 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;@@id = 1 if @@id &gt; 100<br />
&nbsp;&nbsp;&lt;&lt;-GOTO<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" maxlength="5" size="3" id="page#{@@id}" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="submit" onclick="goto_page#{@@id}()" value="Goto"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript"&#038;gt<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function goto_page#{@@id}()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page = Number($('page#{@@id}').value)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total = #{total_pages}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(page &lt; 1 || page &gt; total)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('Please enter a number between 1 and ' + total + '!')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var link = '#{@template.url_for(url_options("_page"))}'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var new_link = link.replace("_page", page)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.location.assign(new_link)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;GOTO<br />
&nbsp;&nbsp;end<br />
end<br />
</code></p>
<p>@@id的作用是因为一个view中有可能多次调用will_paginate，需要对inputbox进行区分，这个renderer还用到了一些继承自WillPaginate::LinkRenderer的方法：</p>
<ul>
<li>url_for(page), 返回指向某页的链接，比如url_for(1) =&gt; &#8216;/posts?page=1&#8242;</li>
<li>total_pages, 返回总页数</li>
<li>page_link_or_span，返回指向某页面的链接</li>
</ul>
<p>更多方法可以在WillPaginate的view_helper.rb中找到。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">无觅猜您也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="AJAX分页(paginate)" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F07-10-25-ajax-will-paginate%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcustom-will-paginate-renderer%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">AJAX分页(paginate)</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="NetBeans IDE: Windows平台最好的Ruby IDE" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F15%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcustom-will-paginate-renderer%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251498.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">NetBeans IDE: Windows平台最好的Ruby IDE</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="JRuby1.0发布" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2F14%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcustom-will-paginate-renderer%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251519.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JRuby1.0发布</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Ruby 1.9正式发布" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fruby-1-9-released%2F&from=http%3A%2F%2Fwww.letrails.cn%2Farchives%2Fcustom-will-paginate-renderer%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/08/3251554.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Ruby 1.9正式发布</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.letrails.cn/archives/custom-will-paginate-renderer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

