﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-火星中转站-随笔分类-Ruby On Rails</title><link>http://www.blogjava.net/martian/category/38578.html</link><description>下一站 --- 火星</description><language>zh-cn</language><lastBuildDate>Wed, 15 Apr 2009 20:56:07 GMT</lastBuildDate><pubDate>Wed, 15 Apr 2009 20:56:07 GMT</pubDate><ttl>60</ttl><item><title>Rails中namespace的layout</title><link>http://www.blogjava.net/martian/archive/2009/04/15/265686.html</link><dc:creator> Martian  </dc:creator><author> Martian  </author><pubDate>Wed, 15 Apr 2009 02:57:00 GMT</pubDate><guid>http://www.blogjava.net/martian/archive/2009/04/15/265686.html</guid><wfw:comment>http://www.blogjava.net/martian/comments/265686.html</wfw:comment><comments>http://www.blogjava.net/martian/archive/2009/04/15/265686.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/martian/comments/commentRss/265686.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/martian/services/trackbacks/265686.html</trackback:ping><description><![CDATA[在rails中提供了namespace的功能，但是如何实现namespace的layout呢？<br />
假如这样一个场景：<br />
routes.rb中这样定义:<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">map.namespace&nbsp;:admin&nbsp;</span><span style="color: #0000ff;">do</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">admin</span><span style="color: #000000;">|</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;admin.resources&nbsp;:articles<br />
&nbsp;&nbsp;&nbsp; admin.resources :tags<br />
end</span></div>
<br />
需要对articles,tags提供一个统一的后台管理界面，根据rails中的layout功能，猜想是否会有layouts/admin.html.erb这样一个针对namespace的模板页，但尝试后发现根据不行，下面是google到的一个问题：<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">Do&nbsp;controllers&nbsp;in&nbsp;namespaces&nbsp;somehow&nbsp;get&nbsp;their&nbsp;own&nbsp;</span><span style="color: #0000ff;">default</span><span style="color: #000000;">&nbsp;layout<br />
file</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;&nbsp;For&nbsp;instance,&nbsp;the&nbsp;UsersController&nbsp;will&nbsp;use&nbsp;layouts</span><span style="color: #000000;">/</span><span style="color: #000000;">users.rhtml<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;it&nbsp;exists.&nbsp;&nbsp;Is&nbsp;there&nbsp;something&nbsp;similar&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;Admin::UsersController<br />
or&nbsp;will&nbsp;it&nbsp;</span><span style="color: #0000ff;">default</span><span style="color: #000000;">&nbsp;to&nbsp;the&nbsp;same&nbsp;file</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;&nbsp;I&nbsp;tried&nbsp;layouts</span><span style="color: #000000;">/</span><span style="color: #000000;"><br />
admin_users.rhtml&nbsp;and&nbsp;layouts</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">users.rhtml&nbsp;with&nbsp;no&nbsp;luck. <br />
</span></div>
<br />
他也尝试了同样的问题，<span style="color: #000000;">layouts</span><span style="color: #000000;">/</span><span style="color: #000000;">users.rhtml, layouts/admin_users.rhtml, layouts/admin/users.rhtml，都是no luck.<br />
<br />
这里可以使用一个取巧的方法，在controller中可以通过layout 方法来指定使用哪个模板页，这里可以写一个BaseController:<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Admin::BaseController&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;ApplicationController<br />
&nbsp;&nbsp;layout&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">admin</span><span style="color: #000000;">'</span><span style="color: #000000;"><br />
end</span></div>
<br />
在BaseController中指定模板页为admin.html.erb<br />
<br />
然后将articles和tags的Controller都改为继承自BaseController。
<img src ="http://www.blogjava.net/martian/aggbug/265686.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/martian/" target="_blank"> Martian  </a> 2009-04-15 10:57 <a href="http://www.blogjava.net/martian/archive/2009/04/15/265686.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rails中的namespace</title><link>http://www.blogjava.net/martian/archive/2009/04/10/264882.html</link><dc:creator> Martian  </dc:creator><author> Martian  </author><pubDate>Fri, 10 Apr 2009 08:56:00 GMT</pubDate><guid>http://www.blogjava.net/martian/archive/2009/04/10/264882.html</guid><wfw:comment>http://www.blogjava.net/martian/comments/264882.html</wfw:comment><comments>http://www.blogjava.net/martian/archive/2009/04/10/264882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/martian/comments/commentRss/264882.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/martian/services/trackbacks/264882.html</trackback:ping><description><![CDATA[在Rails中可以通过namespace来管理controller。<br />
首先生成scaffold:<br />
script/generate scaffold article title:string body:text<br />
在routes.rb中添加如下路由：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">map.namespace&nbsp;:admin&nbsp;</span><span style="color: #0000ff;">do</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">admin</span><span style="color: #000000;">|</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;admin.resources&nbsp;:articles<br />
end</span></div>
<br />
由意味着给article增加了一个名为admin的namespace,将controllers中的articles_controller.rb修改为controllers/admin/articles_controller.rb，也就是将这个控制器放到admin这个文件夹中。<br />
<br />
先看一下相应的路由规则,执行rake roures:<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; admin_articles&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">index</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;formatted_admin_articles&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">index</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POST&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">create</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POST&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">create</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_admin_article&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles</span><span style="color: #000000;">/</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">new</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;formatted_new_admin_article&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles</span><span style="color: #000000;">/</span><span style="color: #0000ff;">new</span><span style="color: #000000;">.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">new</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edit_admin_article&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles</span><span style="color: #000000;">/</span><span style="color: #000000;">:id</span><span style="color: #000000;">/</span><span style="color: #000000;">edit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">edit</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
formatted_edit_admin_article&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles</span><span style="color: #000000;">/</span><span style="color: #000000;">:id</span><span style="color: #000000;">/</span><span style="color: #000000;">edit.:format&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">edit</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;admin_article&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles</span><span style="color: #000000;">/</span><span style="color: #000000;">:id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">show</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatted_admin_article&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles</span><span style="color: #000000;">/</span><span style="color: #000000;">:id.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">show</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUT&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles</span><span style="color: #000000;">/</span><span style="color: #000000;">:id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">update</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUT&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles</span><span style="color: #000000;">/</span><span style="color: #000000;">:id.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">update</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DELETE&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles</span><span style="color: #000000;">/</span><span style="color: #000000;">:id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">destroy</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DELETE&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">admin</span><span style="color: #000000;">/</span><span style="color: #000000;">articles</span><span style="color: #000000;">/</span><span style="color: #000000;">:id.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">destroy</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">admin/articles</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">:controller</span><span style="color: #000000;">/</span><span style="color: #000000;">:action</span><span style="color: #000000;">/</span><span style="color: #000000;">:id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">:controller</span><span style="color: #000000;">/</span><span style="color: #000000;">:action</span><span style="color: #000000;">/</span><span style="color: #000000;">:id.:format</span></div>
<br />
对比一下不加admin这个namespace时的路由：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;article_index&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">index</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
formatted_article_index&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">index</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POST&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">create</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POST&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">create</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_article&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article</span><span style="color: #000000;">/</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">new</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;formatted_new_article&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article</span><span style="color: #000000;">/</span><span style="color: #0000ff;">new</span><span style="color: #000000;">.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">new</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edit_article&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article</span><span style="color: #000000;">/</span><span style="color: #000000;">:id</span><span style="color: #000000;">/</span><span style="color: #000000;">edit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">edit</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;formatted_edit_article&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article</span><span style="color: #000000;">/</span><span style="color: #000000;">:id</span><span style="color: #000000;">/</span><span style="color: #000000;">edit.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">edit</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;article&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article</span><span style="color: #000000;">/</span><span style="color: #000000;">:id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">show</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatted_article&nbsp;GET&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article</span><span style="color: #000000;">/</span><span style="color: #000000;">:id.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">show</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUT&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article</span><span style="color: #000000;">/</span><span style="color: #000000;">:id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">update</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUT&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article</span><span style="color: #000000;">/</span><span style="color: #000000;">:id.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">update</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DELETE&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article</span><span style="color: #000000;">/</span><span style="color: #000000;">:id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">destroy</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DELETE&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">article</span><span style="color: #000000;">/</span><span style="color: #000000;">:id.:format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:action</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">destroy</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;:controller</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">article</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">:controller</span><span style="color: #000000;">/</span><span style="color: #000000;">:action</span><span style="color: #000000;">/</span><span style="color: #000000;">:id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">:controller</span><span style="color: #000000;">/</span><span style="color: #000000;">:action</span><span style="color: #000000;">/</span><span style="color: #000000;">:id.:format</span></div>
<br />
所有的路由规则上面，都加上了admin这个namespace。<br />
<br />
下面就要将views目录下面的articles目录改到views/admin目录下面，因为根据路由规则，会到views/admin/articles/目录下面去查找相应的模板。<br />
<br />
另外，还需要将原来的new_article_url | new_article_path等helper方法修改为new_admin_article_url | new_admin_article_path，将这些helper方法全部加上admin这个namespace。<br />
<img src ="http://www.blogjava.net/martian/aggbug/264882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/martian/" target="_blank"> Martian  </a> 2009-04-10 16:56 <a href="http://www.blogjava.net/martian/archive/2009/04/10/264882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Why I like Ruby #1: alias_method</title><link>http://www.blogjava.net/martian/archive/2009/04/03/263772.html</link><dc:creator> Martian  </dc:creator><author> Martian  </author><pubDate>Fri, 03 Apr 2009 08:18:00 GMT</pubDate><guid>http://www.blogjava.net/martian/archive/2009/04/03/263772.html</guid><wfw:comment>http://www.blogjava.net/martian/comments/263772.html</wfw:comment><comments>http://www.blogjava.net/martian/archive/2009/04/03/263772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/martian/comments/commentRss/263772.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/martian/services/trackbacks/263772.html</trackback:ping><description><![CDATA[<p>So you found yourself in the need to override a method but still count on it&#8217;s old behaviour?</p>
<p>No problem! Override it with your new code, call <strong>super</strong> and&#8230;. Uh oh!! Suddenly this turned into a problem&#8230; Let me give some more context.</p>
<p>I was testing <a href="http://ferret.davebalmain.com/trac/wiki">Ferret</a> (and the <a href="http://projects.jkraemer.net/acts_as_ferret/">acts_as_ferret</a>
plugin) in a project to provide full text search capabilities to our
models. One of the things the plugin does is to add a new method to
ActiveRecord, called <em>find_with_ferret</em>. That way, every model can use it. Great!</p>
<p>So I thought that would make sense for me to remove all <a href="http://en.wikipedia.org/wiki/Diacritics">diatrictics</a> from the input text before letting ferret do its job. You know, like removing <a href="http://en.wikipedia.org/wiki/Umlaut_%28diacritic%29">umlauts</a> and all that.</p>
<p>I could do that by overriding this method with code to remove the
undesired chars and then call its older version to finally do the
search - something like calling super, but not quite. And I didn&#8217;t want
my models to inherit from anything else than ActiveRecord::Base. That
wouldn&#8217;t make any sense.</p>
<p><a href="http://www.ruby-doc.org/core/classes/Module.html#M000395">alias_method</a> to the rescue!</p>
<p>You know that to redefine a method in an existing class you can open
it up and rewrite it. But since you don&#8217;t wanna loose the behaviour
provided by the original method, this is how you can achieve this:</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">module&nbsp;ActiveRecord<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Base<br />
&nbsp;&nbsp;&nbsp;&nbsp;alias_method&nbsp;:find_with_ferret_original,&nbsp;:find_with_ferret<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;find_with_ferret(q,&nbsp;options&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{},&nbsp;find_options&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{})<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remove_diatrictics</span><span style="color: #000000;">!</span><span style="color: #000000;">(q)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find_with_ferret_original(q,&nbsp;options,&nbsp;find_options)<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;end<br />
end</span></div>
<p>And you&#8217;re good to go. On line 3 you&#8217;re just giving the original method an alias, making a copy of it.</p>
<p>Then you redefine it the way you like and on line 6 you call the old version to make sure u still got the same behaviour.<br />
Now all my models can benefit of this change without requiring them to call another method nor inherit from another class.</p>
<p>Cool, huh? <img src="http://www.leonardoborges.com/writings/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;"><br />
</span></p>
<img src ="http://www.blogjava.net/martian/aggbug/263772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/martian/" target="_blank"> Martian  </a> 2009-04-03 16:18 <a href="http://www.blogjava.net/martian/archive/2009/04/03/263772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修改Easy_Fckeditor上传图片的目录</title><link>http://www.blogjava.net/martian/archive/2009/04/03/263669.html</link><dc:creator> Martian  </dc:creator><author> Martian  </author><pubDate>Fri, 03 Apr 2009 01:32:00 GMT</pubDate><guid>http://www.blogjava.net/martian/archive/2009/04/03/263669.html</guid><wfw:comment>http://www.blogjava.net/martian/comments/263669.html</wfw:comment><comments>http://www.blogjava.net/martian/archive/2009/04/03/263669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/martian/comments/commentRss/263669.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/martian/services/trackbacks/263669.html</trackback:ping><description><![CDATA[<strong>修改文件上传目录</strong><br />
easy_fckeditor默认的文件上传目录为<br />
public/uploads/Image，全部上传的图片都会被上传的该目录下，为了方便管理，将上传的图片根据上传日期上传到不同的日期目录下：<br />
需要修改几个方法：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><span style="color: #000000;">&nbsp;def&nbsp;current_directory_path<br />
&nbsp;&nbsp;&nbsp;&nbsp;base_dir&nbsp;</span><span style="color: #000000;">=</span>&nbsp;<span style="color: #000000;">"</span><span style="color: #000000;">#{UPLOADED_ROOT}/#{params[:Type]}/#{&nbsp;Time.now.strftime('%Y%m%d')&nbsp;}</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
#&nbsp;&nbsp;&nbsp;&nbsp;Dir.mkdir(base_dir,&nbsp;</span><span style="color: #000000;">0775</span><span style="color: #000000;">)&nbsp;unless&nbsp;File.exists</span><span style="color: #000000;">?</span><span style="color: #000000;">(base_dir)<br />
&nbsp;&nbsp;&nbsp;&nbsp;FileUtils.mkdir_p&nbsp;base_dir<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_path(</span><span style="color: #000000;">"</span><span style="color: #000000;">#{base_dir}#{params[:CurrentFolder]}</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">#{base_dir}</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
&nbsp;end</span></div>
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><span style="color: #000000;">def&nbsp;upload_directory_path<br />
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;uploaded&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;request.relative_url_root.to_s&nbsp;</span><span style="color: #000000;">+</span>&nbsp;<span style="color: #000000;">"</span><span style="color: #000000;">#{UPLOAD_FOLDER}/#{params[:Type]}</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;uploaded&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ActionController::Base.relative_url_root.to_s</span><span style="color: #000000;">+</span><span style="color: #000000;">"</span><span style="color: #000000;">#{UPLOADED}/#{params[:Type]}</span><span style="color: #000000;">"</span>&nbsp;<span style="color: #000000;">+</span>&nbsp;<span style="color: #000000;">"</span><span style="color: #000000;">/</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;Time.now.strftime(</span><span style="color: #000000;">'</span><span style="color: #000000;">%Y%m%d</span><span style="color: #000000;">'</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">#{uploaded}#{params[:CurrentFolder]}</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
end</span></div>
<br />
主要是加个日期<span style="color: #000000;">Time.now.strftime(</span><span style="color: #000000;">'</span><span style="color: #000000;">%Y%m%d</span><span style="color: #000000;">'</span><span style="color: #000000;">)</span>,将上传后的图片上传到public/uploads/Image/20090403/目录下，如果要换另一种形式，也很方便 ，将<span style="color: #000000;">Time.now.strftime(</span><span style="color: #000000;">'</span><span style="color: #000000;">%Y%m%d</span><span style="color: #000000;">'</span><span style="color: #000000;">)改成自己需要的就可以了。</span>
<img src ="http://www.blogjava.net/martian/aggbug/263669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/martian/" target="_blank"> Martian  </a> 2009-04-03 09:32 <a href="http://www.blogjava.net/martian/archive/2009/04/03/263669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rails Plugin: Easy Fckeditor</title><link>http://www.blogjava.net/martian/archive/2009/04/02/263634.html</link><dc:creator> Martian  </dc:creator><author> Martian  </author><pubDate>Thu, 02 Apr 2009 14:57:00 GMT</pubDate><guid>http://www.blogjava.net/martian/archive/2009/04/02/263634.html</guid><wfw:comment>http://www.blogjava.net/martian/comments/263634.html</wfw:comment><comments>http://www.blogjava.net/martian/archive/2009/04/02/263634.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/martian/comments/commentRss/263634.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/martian/services/trackbacks/263634.html</trackback:ping><description><![CDATA[#安装easy fckeditor插件，需要首先安装git<br />
ruby script/plugin install git://github.com/gramos/easy-fckeditor.git<br />
<br />
#使用rake安装fckeditor<br />
rake fckeditor:install<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">**</span><span style="color: #000000;">&nbsp;Installing&nbsp;FCKEditor&nbsp;Plugin&nbsp;version&nbsp;</span><span style="color: #000000;">0.8</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;"><img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
Creating&nbsp;directory&nbsp;editor<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
Creating&nbsp;directory&nbsp;css<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
Creating&nbsp;directory&nbsp;behaviors<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;Installing&nbsp;file&nbsp;disablehandles.htc<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;Installing&nbsp;file&nbsp;showtableborders.htc<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;Installing&nbsp;file&nbsp;fck_editorarea.css<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;Installing&nbsp;file&nbsp;fck_internal.css<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;Installing&nbsp;file&nbsp;fck_showtableborders_gecko.css<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
Creating&nbsp;directory&nbsp;images<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;Installing&nbsp;file&nbsp;block_address.png<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;Installing&nbsp;file&nbsp;block_blockquote.png<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;Installing&nbsp;file&nbsp;block_div.png<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
.<br />
.<br />
.<br />
&nbsp;&nbsp;Installing&nbsp;file&nbsp;fckplugin.js<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;Installing&nbsp;file&nbsp;_upgrade.html<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;Installing&nbsp;file&nbsp;_whatsnew.html<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
&nbsp;&nbsp;Installing&nbsp;file&nbsp;_whatsnew_history.html<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
</span><span style="color: #000000;">**</span><span style="color: #000000;">&nbsp;Successfully&nbsp;installed&nbsp;FCKEditor&nbsp;Plugin&nbsp;version&nbsp;</span><span style="color: #000000;">0.8</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span></div>
<br />
#在需要使用Fckeditor的页面引入fckeditor.js文件<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;%=</span><span style="color: #000000;">&nbsp;javascript_include_tag&nbsp;:fckeditor&nbsp;&nbsp;</span><span style="color: #000000;">%&gt;<br />
<br />
</span></div>
#使用fckeditor_textarea<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;%=</span><span style="color: #000000;">&nbsp;fckeditor_textarea&nbsp;:article,&nbsp;:body,&nbsp;{:toolbarSet&nbsp;</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">Easy</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;:width&nbsp;</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">100%</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;:height&nbsp;</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">300px</span><span style="color: #000000;">'</span><span style="color: #000000;">}&nbsp;</span><span style="color: #000000;">%&gt;</span></div>
<br />
#更详细的使用说明，可以参看http://github.com/gramos/easy-fckeditor/tree/master<br />
<br />
<strong>解决上传图片问题</strong><br />
<br />
1. 在上传图片的时候(rails2.2.2)，会出现如下的错误：<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">NoMethodError&nbsp;(undefined&nbsp;method&nbsp;`relative_url_root</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;for&nbsp;#&lt;ActionController::CgiRequest:0x594ab4c&gt;):</span></div>
解决方法参考 http://github.com/salicio/fckeditor/commit/fcf8fbee8cfad3a3df0df50172e448727909ccb9<br />
1. 将/vendor/plugins/easy_fckeditor/<a href="http://github.com/salicio/fckeditor/tree/fcf8fbee8cfad3a3df0df50172e448727909ccb9/app/controllers/fckeditor_controller.rb"></a>app/controllers/fckeditor_controller.rb中的<br />
uploaded&nbsp;=&nbsp;request.relative_url_root.to_s+"#{UPLOADED}/#{params[:Type]}"<br />
修改为:<br />
uploaded = ActionController::Base.relative_url_root.to_s+"#{UPLOADED}/#{params[:Type]}"<br />
2. 将/vendor/plugins/easy_fckeditor/lib/fckeditor.rb中的<br />
js_path = "#{controller.relative_url_root}/javascripts"<br />
修改为：<br />
js_path = "#{ActionController::Base.relative_url_root}/javascripts"<br />
<br />
2. 该plugins版本少定义了一个变量：<br />
会出现如下错误：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">NameError&nbsp;(uninitialized&nbsp;constant&nbsp;FckeditorController::UPLOADED):</span></div>
<br />
修改很简单，只要修改<br />
/vendor/plugins/easy_fckeditor/app/controllers/fckeditor_controller.rb,增加:<br />
UPLOADED = "/uploads"<br />
<br />
完成之后，能够正常上传图片，并预览。<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/martian/aggbug/263634.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/martian/" target="_blank"> Martian  </a> 2009-04-02 22:57 <a href="http://www.blogjava.net/martian/archive/2009/04/02/263634.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>install ruby on rails, sqlite3, sqlite3-ruby under ubuntu8.10</title><link>http://www.blogjava.net/martian/archive/2009/04/01/263360.html</link><dc:creator> Martian  </dc:creator><author> Martian  </author><pubDate>Wed, 01 Apr 2009 06:57:00 GMT</pubDate><guid>http://www.blogjava.net/martian/archive/2009/04/01/263360.html</guid><wfw:comment>http://www.blogjava.net/martian/comments/263360.html</wfw:comment><comments>http://www.blogjava.net/martian/archive/2009/04/01/263360.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/martian/comments/commentRss/263360.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/martian/services/trackbacks/263360.html</trackback:ping><description><![CDATA[<p>nothing but the script I used:</p>
<p>#install Ruby and relative<br />
apt-get install ruby</p>
<br />
#install wget<br />
sudo apt-get install wget<br />
<br />
#install rubygems <br />
wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz<br />
tar xzf rubygems-1.3.1.tgz<br />
cd rubygems-1.3.1<br />
sudo ruby setup.rb<br />
gem -v<br />
1.3.1<br />
<br />
# or update rubygems<br />
sudo gem install rubygems-update -v 1.3.1<br />
<br />
<p>#install Rails and dependencies<br />
gem install rails &#8211;include-dependencies -v=2.2.2</p>
<br />
#install Sqlite3<br />
<p>
apt-get install  sqlite3 swig libsqlite3-ruby libsqlite3-dev</p>
<p>apt-get install ruby1.8-dev libsqlite3-dev (required)</p>
<p><br />
gem install sqlite3-ruby #compile this need libsqlite.h</p>
<img src ="http://www.blogjava.net/martian/aggbug/263360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/martian/" target="_blank"> Martian  </a> 2009-04-01 14:57 <a href="http://www.blogjava.net/martian/archive/2009/04/01/263360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ActiveRecord级联删除</title><link>http://www.blogjava.net/martian/archive/2009/03/30/262983.html</link><dc:creator> Martian  </dc:creator><author> Martian  </author><pubDate>Mon, 30 Mar 2009 13:00:00 GMT</pubDate><guid>http://www.blogjava.net/martian/archive/2009/03/30/262983.html</guid><wfw:comment>http://www.blogjava.net/martian/comments/262983.html</wfw:comment><comments>http://www.blogjava.net/martian/archive/2009/03/30/262983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/martian/comments/commentRss/262983.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/martian/services/trackbacks/262983.html</trackback:ping><description><![CDATA[Rails在关联关系中，han_one和has_many都有一个:dependent选项，告诉ActiveRecord在删除父记录时该如何处理子记录，它有五个属性(AWDWR)：<br />
<ol>
    <li>:dependent =&gt; :destroy(或true) --- 删除父记录的同时删除子表中的记录
    <li>:dependent =&gt; :nullify&nbsp; --- 删除父记录之后保留子记录，同时将子记录的外键值设置为null<br />
    <li>:dependent =&gt; :false(或nil) --- 删除父记录时不改变子记录。 </li>
</ol>
但是在使用的过程中，设置为:destroy或:nullify，都没有达到效果，由于使用的是rails2.2.2，看了一下has_many的源码：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #800000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;[:dependent]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;If&nbsp;set&nbsp;to&nbsp;&lt;tt&gt;:destroy&lt;/tt&gt;&nbsp;all&nbsp;the&nbsp;associated&nbsp;objects&nbsp;are&nbsp;destroyed<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;alongside&nbsp;this&nbsp;object&nbsp;by&nbsp;calling&nbsp;their&nbsp;+destroy+&nbsp;method.&nbsp;&nbsp;If&nbsp;set&nbsp;to&nbsp;&lt;tt&gt;:delete_all&lt;/tt&gt;&nbsp;all&nbsp;associated<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;objects&nbsp;are&nbsp;deleted&nbsp;*without*&nbsp;calling&nbsp;their&nbsp;+destroy+&nbsp;method.&nbsp;&nbsp;If&nbsp;set&nbsp;to&nbsp;&lt;tt&gt;:nullify&lt;/tt&gt;&nbsp;all&nbsp;associated<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;objects'&nbsp;foreign&nbsp;keys&nbsp;are&nbsp;set&nbsp;to&nbsp;+NULL+&nbsp;*without*&nbsp;calling&nbsp;their&nbsp;+save+&nbsp;callbacks.&nbsp;*Warning:*&nbsp;This&nbsp;option&nbsp;is&nbsp;ignored&nbsp;when&nbsp;also&nbsp;using<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;the&nbsp;&lt;tt&gt;:through&lt;/tt&gt;&nbsp;option.</span></div>
<br />
发现选项已经变成了：<br />
<ul>
    <li>:destroy
    <li>:delete_all
    <li>:nullify </li>
</ul>
但发现也没有达到要求。<br />
<br />
最后发现controller代码中调用的是ActiveRecord的delete方法，换成destroy方法后，发现能够正常地级联删除子记录。<br />
对于ActiveRecord，delete方法不能级联删除子记录，而要使用destroy方法 。<br />
<br />
<img src ="http://www.blogjava.net/martian/aggbug/262983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/martian/" target="_blank"> Martian  </a> 2009-03-30 21:00 <a href="http://www.blogjava.net/martian/archive/2009/03/30/262983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL5.1.x的驱动有问题？</title><link>http://www.blogjava.net/martian/archive/2009/03/29/262743.html</link><dc:creator> Martian  </dc:creator><author> Martian  </author><pubDate>Sun, 29 Mar 2009 10:36:00 GMT</pubDate><guid>http://www.blogjava.net/martian/archive/2009/03/29/262743.html</guid><description><![CDATA[今天把MySQL换成了5.1版本的，使用rake db:create的时候，出现了一个error，但是能够正常地在数据库中创建database，但使用rake db:migrate的时候，就报错说无法使用"show tables"这个命令，但表还是正常的生成了。可在使用过程中，只要涉及到写数据库的操作，都会异常退出server，把MySQL换成5.0版本的，问题就解决了，估计是驱动问题。<br />
<img src ="http://www.blogjava.net/martian/aggbug/262743.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/martian/" target="_blank"> Martian  </a> 2009-03-29 18:36 <a href="http://www.blogjava.net/martian/archive/2009/03/29/262743.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>