﻿<?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-xiaoqiu369-随笔分类-ruby&amp;rails</title><link>http://www.blogjava.net/xiaoqiu369/category/36885.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 07 Jan 2009 05:17:26 GMT</lastBuildDate><pubDate>Wed, 07 Jan 2009 05:17:26 GMT</pubDate><ttl>60</ttl><item><title>ror执行流程</title><link>http://www.blogjava.net/xiaoqiu369/archive/2009/01/05/249937.html</link><dc:creator>邱 波</dc:creator><author>邱 波</author><pubDate>Mon, 05 Jan 2009 08:18:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoqiu369/archive/2009/01/05/249937.html</guid><wfw:comment>http://www.blogjava.net/xiaoqiu369/comments/249937.html</wfw:comment><comments>http://www.blogjava.net/xiaoqiu369/archive/2009/01/05/249937.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoqiu369/comments/commentRss/249937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoqiu369/services/trackbacks/249937.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;1.we receive a new request for a page&nbsp;to our rails application.<br />
&nbsp;&nbsp;&nbsp;&nbsp;2.Rails routes this request to a controller for processing.<br />
&nbsp;&nbsp;&nbsp;&nbsp;3.Our controller interacts with the models in our application to gather the necessary data<br />
&nbsp;&nbsp;&nbsp;&nbsp;4.Our model may retrive or insert data to our database<br />
&nbsp;&nbsp;&nbsp;&nbsp;5.Once our models have generated or retrived correct information,they return the data back to the collection<br />
&nbsp;&nbsp;&nbsp;&nbsp;6.The controller collects all of the data it's received from models and selects a view template to render<br />
&nbsp;&nbsp;&nbsp;&nbsp;7.The view template is rendered using&nbsp; the data that the collection gathered and handed to&nbsp; the web server<br />
&nbsp;&nbsp;&nbsp;&nbsp;8.An html page is returned to the user.<img src ="http://www.blogjava.net/xiaoqiu369/aggbug/249937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoqiu369/" target="_blank">邱 波</a> 2009-01-05 16:18 <a href="http://www.blogjava.net/xiaoqiu369/archive/2009/01/05/249937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ROR第一课:hello world</title><link>http://www.blogjava.net/xiaoqiu369/archive/2008/12/23/247935.html</link><dc:creator>邱 波</dc:creator><author>邱 波</author><pubDate>Tue, 23 Dec 2008 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoqiu369/archive/2008/12/23/247935.html</guid><wfw:comment>http://www.blogjava.net/xiaoqiu369/comments/247935.html</wfw:comment><comments>http://www.blogjava.net/xiaoqiu369/archive/2008/12/23/247935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoqiu369/comments/commentRss/247935.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoqiu369/services/trackbacks/247935.html</trackback:ping><description><![CDATA[按照惯例,还是打印出Hello world.<br />
<br />
/app/controllers/<span style="color: #ff0000">stories_controllers.rb</span>:<br />
<br />
<span style="color: #339966">class StoriesController&lt;ActionControllers::Base<br />
&nbsp;&nbsp;&nbsp;&nbsp;def index<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@varies="hello world"<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</span><br />
<br />
/views/stories/index.html.erb:<br />
<br />
<span style="color: #339966">&lt;%=@varies%&gt;</span><br />
<span style="color: #ff0000"><br />
/config/routes.rb<br />
</span><br />
<span style="color: #339966">ActionController::Routing::Routes.draw do |map|<br />
&nbsp;&nbsp;&nbsp;&nbsp;map 'stories',:controller=&gt;'stories',:action=&gt;'index'<br />
end<br />
</span><br />
<font style="color: #000000" color="#339966">启动服务在IE中打开:<br />
http://localhost:3000/stories<br />
OK</font><img src ="http://www.blogjava.net/xiaoqiu369/aggbug/247935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoqiu369/" target="_blank">邱 波</a> 2008-12-23 16:46 <a href="http://www.blogjava.net/xiaoqiu369/archive/2008/12/23/247935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rails Routing from the Outside In</title><link>http://www.blogjava.net/xiaoqiu369/archive/2008/12/19/247327.html</link><dc:creator>邱 波</dc:creator><author>邱 波</author><pubDate>Fri, 19 Dec 2008 06:12:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoqiu369/archive/2008/12/19/247327.html</guid><wfw:comment>http://www.blogjava.net/xiaoqiu369/comments/247327.html</wfw:comment><comments>http://www.blogjava.net/xiaoqiu369/archive/2008/12/19/247327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoqiu369/comments/commentRss/247327.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoqiu369/services/trackbacks/247327.html</trackback:ping><description><![CDATA[<p>Rails Routing from the Outside In<br />
http://guides.rails.info/routing_outside_in.html<br />
这篇文章将介绍Rails routing针对用户方面的一些特性.参考这篇文章,你将会学到以下知识:<br />
a.理解routing的作用<br />
b.破解routes.rb内的代码<br />
c.构建你自己的routes,可以用classic hash样式或现在流行的RESTful样式.<br />
d.识别route怎样与controller和action映射.</p>
<p>1.The Dual Purpose of Routing</p>
<p>Rails routing 有两种机制,你可以将trees转换为pager,或把paper转换回trees.具体地说,它可以连接收到的请求与你应用程序的控制器的代码和帮你生成URLs,而不用做为一个字符串硬编码.</p>
<p>1.1connecting URLs to Code;<br />
当你的应用程序收到的请求为:<br />
GET /patients/17<br />
Rails里的路由引擎就是一段分发这个请求到应用程序合适的位置进行处理的一段代码.在这个案例中,这个应用程序很可能以运行patients控制器里的show结束.显示patients ID为17的详细信息.</p>
<p>1.2 Generateing URLs from Code<br />
Routing 也可以反过来运行,如果你的应用程序中包含这样的代码:</p>
<p>@patient=Patient.find(17)<br />
&lt;%= link_to "Patient Record",patient_path(@patient)%&gt;</p>
<p>这时路由引擎转换这个链接到一个URL:http://example.com/patients/17.以这种方式你可以降低应用程序的脆弱性,使你的代码更加容易阅读和理解.</p>
<p>Patient 必须作为一个resource被声明为一个资源,通过named route来转换.</p>
<p>2.Quick Tour of Routes.rb</p>
<p>在Rails中routing有两种组件,routing engine本身,它做为Rails的一部分,config/routes.rb文件,它包含实际的可用在应用程序中的routes.</p>
<p>2.1 Processing the File<br />
在形式上,Routes.rb文件也就是一个大大的block,会被放入ActionController::Routing::Routes.draw.<br />
在这个文件中有五种主要的样式:<br />
RESTful Routes<br />
Named Routes<br />
Nested Routes<br />
Regular Routes<br />
Default Routes</p>
<p>2.2 RESTful Routes<br />
RESTful Routes 利用rails嵌入式REST方法来将routing的所有信息包装为一个单独的声明.eg: map.resource :books</p>
<p>2.3 named Routes<br />
named routes 在你的代码中给你很可读的链接,也可以处理收到的请求</p>
<p>map.login '/login' ,:controller=&gt;'session',:action=&gt;'new'</p>
<p>2.4 Nested routes</p>
<p>Nested routes可以在一个资源里声明另一个资源.</p>
<p>map.resources :assemblies do |assemblies|<br />
&nbsp;assemblies.resources :parts<br />
end</p>
<p>2.5 Regular Routes<br />
map.connect 'parts/:number',:controller=&gt;'inventory',:action=&gt;'show'</p>
<p>2.6 Default Routes<br />
map.connect ':controller/:action/:id'<br />
map.connect ':controller/:action/:id.:format'<br />
</p>
  <img src ="http://www.blogjava.net/xiaoqiu369/aggbug/247327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoqiu369/" target="_blank">邱 波</a> 2008-12-19 14:12 <a href="http://www.blogjava.net/xiaoqiu369/archive/2008/12/19/247327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Routes</title><link>http://www.blogjava.net/xiaoqiu369/archive/2008/12/16/246553.html</link><dc:creator>邱 波</dc:creator><author>邱 波</author><pubDate>Tue, 16 Dec 2008 01:58:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoqiu369/archive/2008/12/16/246553.html</guid><wfw:comment>http://www.blogjava.net/xiaoqiu369/comments/246553.html</wfw:comment><comments>http://www.blogjava.net/xiaoqiu369/archive/2008/12/16/246553.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoqiu369/comments/commentRss/246553.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoqiu369/services/trackbacks/246553.html</trackback:ping><description><![CDATA[<p>routes:</p>
<p>routes的命名允许你减少重复的代码,通过分配一个根据生成一个封装routes rule hash的方法的路径规则名称来实现,<br />
你可以定义一个命名路径,你可以调用它在你的routes.rb文件中来代替connect方法.<br />
例如:<br />
map.home '',:controller=&gt;'main',:action=&gt;'start'<br />
这只是为你做了很少的一点事.首先,它创建一个名为home_url的方法.因此上面的命名规则,前期的请求为:<br />
&nbsp;redirect_to :controller=&gt;'main',:action=&gt;'start' 现在为:<br />
&nbsp;redirect_to home_url </p>
<p>因为*_to方法被重写的方式,在上面的情况,你没有将参数传递给命名路径,你也可以将它传递给一个引用的方法.<br />
&nbsp;redirect_to :home_url </p>
<p>注意:将命名路径做为一个符号已经取消了,在rails2.0将被删除.</p>
<p>这个也能应用于是tests.如果在你的controller里有redirect_to home_url,也可以用 assert_redirect_to home_url. </p>
<p>*_url方法需要一个唯一的可选参数.这个参数是一个hash,插入url_for之中,这样做就是为了当用redirect_to,link_to时命名规则可以参数化.</p>
<p>你如果说有这样的route</p>
<p>&nbsp;map.user_page 'users/:user',:controller=&gt;'users',:action=&gt;'show' </p>
<p>你可以这样做</p>
<p>&nbsp;link_to @user.username,user_page_url(:user=&gt;@user) </p>
<p>注释:这个仅仅象普通的routes,表单是path_part/:symbol.在上面的例子中,user这部分将只展示在路径中,并不严格与controller相关联.users/只是path生成的部分,<br />
上面的例子生成&lt;a href="http://localhost/users/7"&gt;http://localhost/users/7&lt;/a&gt;<br />
比如:</p>
<p>:user 是你定义的参数名称,如果定义两个一模一样的路径,很可能得不到你想要的结果.对于routes,定义默认值.</p>
<p>当用参数来命名routes,你必须传递参数给assert中的命名规则.如果在你的controller中有redirect_to user_page_url(:user=&gt;@user), 你需要有assert_redirected_to user_page_url(:user=&gt;@user).controller中@user的id必须与test中的@user的id匹配.</p>
<p>除了[route_name]_url方法,你可以用hash_for_[route_name]_url方法,这个方法包装hash,没有调用url_for</p>
<p>所有的reoute将其它的命名规则用map.connect提供给你.</p>
  <img src ="http://www.blogjava.net/xiaoqiu369/aggbug/246553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoqiu369/" target="_blank">邱 波</a> 2008-12-16 09:58 <a href="http://www.blogjava.net/xiaoqiu369/archive/2008/12/16/246553.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>