`
BlueFuture
  • 浏览: 53758 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

rails中的路由设置

    博客分类:
  • ROR
阅读更多

一、 路由规则

1 路由文件
config/routes.rb 文件建立了外部请求与应用程序的连接

2 路由设置查看
应用程序路由定义在 RoutSet 对象中,该对象保存在 ActionController::Routing 模块的常量 Routes 中,在 console 中通过 ActionController::Routing::Routes.routes 方法可以访问到 . (为了简单后面用变量 rs )

3 给定 URL 查看路由文件中是否有相应的配置
rs.recognize_path “/xxxx” 若有此配置则 =>{….}

4 给定任意参数查看所生成的 URL

rs.generate(:controller=>:xxx,:action=>:yyy………)

5 把尚未编写出的控制器加入路由配置
ActionController::Routing::use_controllers! [“xxx”,”yyy”,”zzz”]

注意:用 rails 框架可一同生成路由和控制器

6 重新装载路由定义
在 console 中执行 load ”config/routes.rb” 一般在执行 5 后做此操作

二、 用 map.connect 定义路由规则

1 规则( map.connect 的主要参数在‘‘中)
路由中 map.connect  ‘ 期中设置规则 ’ 如 map.connect ‘:controller/:action/:id’

注意:
1)  配置中以 :xxxx 形式的部分将得到 URL 中对应的值,形成键 - 值的 hash 参数,如 xiaofeng/nb/1 这个 URL 中的 xiaofeng 将成为键 :controller 的值, nb 也一样

2)  配置中以 *xxxx 形式的部分将得到 URL 对应部分以后的所有值,与 :xxxx 模式类似,不过 *xxxx 的位置始终在路由配置的最后 如 ’:controller/:action/*xxxx’ 与此同时 *xxxx 得到的将是一个 hash 而不只是一个值

3)  主要参数中的非 :xxxx 形式与 *xxxx 形式当且仅当 URL 中与之对应时才会匹配上,如‘ story/:controller/:id ’与之匹配的 URL 必须第一个字段为 story

4)  :controller 与 :action 可以出现在主要参数的单引号中,也可以出现在下面将要介绍的其他参数中,以 hash 的形式来指定他们所对应的值

5)  对 URL 匹配对应的路由时会根据 routes.rb 中声明的顺序逐一匹配,并使用第一条符合的路由规则

2 map.connect 接受的另一些参数(除 :controller 和 :action )
1)  :defaults=>{:name=>’value’, …… }

为模式中命名参数设置默认值。如果一个模式的组成部分有默认值,可以在 URL 中省略。 Routing 下默认提供了 defaults=>{:action=”index”,:id=>nil}

2)       :requirements=>{:name=>/regexp/, …… }
特定组成部分必须与指定的正则表达式一一匹配

3)       :conditions=>{:name=>/regexp/orstring , …… }
该参数指定请求的动词,如 :conditions=>{:method=>:get},

4)       :name=>value
设置 :name 参数的默认值,与 :defaults 的区别为其指定的 :name 的默认值对主要参数部分有此 :name 的路由模式不起作用( :name 的值以 URL 中给定的值为准则),除非 URL 中没有给定对应的值并且 :defaults 没有指定其默认值时此参数有效
一般情况下有 :name=>value 指定的参数为定死的,而不是路由给出的

三、 生成 URL

1 无名路由
url_for() 方法
接受一组 hash 并将其转化为 URL 地址

       如: url_for(:controller=>’store’, :action=>’display’, :id=>’123’)

              解析为 http://pragprog.com/store/display/123

当接受参数中有部分参数被省略时,被省略的参数的值有当前控制器对应的值代替

       如:当前 URL 为 http://pragprog.com/store/display

              url_for(:action=>’show’)  # URL =>http://pragprog.com/store/show

              被省略的 controller 被当前 controller 所代替了

当接受参数中使用 ActiveRecord 的对象作为参数时,则使用该对象数据库中的 id 值

       如: user=User.find(1)

              redirect_to(:action=>’show’, :id=>user)  # => /show/1

在控制器中动态改变服务器的默认配置 default_url_options()

       接受参数:见 P403

2 具名路由
既给 routes.rb 中的路由配置起名,可以通过访问“名称 _url ”来访问该路由配置

       如: map.index “blog/”, :controller=>”blog”, :action=>”index”

              index_url  # => http://pragprog.com/blog/

可以通过接受参数为具名路由传入 URL 参数

       如: map.show “blog/:id”, :controller=>”blog”, :action=>”show”

              show_url :id=>”1”  # => http://pragprog.com/blog/1

注: 定义的具名路由除了用 xxx­_url 外还可以用 xxx_path (不包含 xxx_url 中的协议、主机地址和端口,只包含路径)
3 有根路由
对于同一应用的开发和生产版本放到同一服务器上可以使用有根路由来区别不同应用下的相同功能

       如:同一应用的 blog 控制器在不同版本下的路由为

http://megablogworld.com/development/blog 开发模式

              http://megablogworld.com/project/blog 生产模式

设置有根路由:

1 在服务器配置文件中设置环境变量 RAILS_RELATIVE_URL_ROOT

2 在 config/environments.rb 文件中, 通过设置环境变量 ENV[‘RAILS_RELATIVE_URL_ROOT’] 或 ActionController::AbstractRequest.relative_url_root = "/other_url"

4 REST 和 Rails

Rails 支持增加一组 REST 风格的路由配置的接口:在 route 文件中设置

       map.resources:articlesjiang 控制器的路由将以 rest 风格来匹配 URL

Method
 URL path
 Action
 Helper
 
get
 /articles
 index
 articles_url
 
post
 /articles
 create
 articles_url
 
Get
 /articles
 new
 new_article_url
 
Get
 /articles/1
 show
 article_url(:id=>1)
 
Put
 /articles/1
 update
 article_url(:id=>1)
 
Get
 /articles/1;edit
 edit
 edit_article_url(:id=>1)
 
Delete
 /articles/1
 destroy
 article_url(:id=>1)
 

 

5 为 rest 添加自己的 Action

添加一个为一组资源提供的 action

map.resources:articles, :controller => {:recent => :get}

Method
 URL path
 Action
 Helper
 
get
 /articles;recent
 recent
 recent_articles_url
 

 

为某项资源添加一个 action

       map.resources:articles, :member => {:embargo => :put, :release => :put}

Method
 URL path
 Action
 Helper
 
put
 /articles/1;embargo
 embargo
 dmbargo_article_url(:id=>1)
 
put
 /articles/1;release
 release
 release_article_url(:id=>1)
 

 

只针对 action=>:new 来添加一个 action

       map.resources:articles, :new => {:shot => :put,}

Method
 URL path
 Action
 Helper
 
put
 /articles/new;shot
 shot
 shot_new_article_url(:id=>1)
 

 

6 rest 嵌套资源
声明嵌套资源路由

       map.resources :articles do |article|

              article.resources :comments

       end

Method
 URL path
 Action
 Helper
 
get
 /articles/1/comments
 index
 comments_url(:article_id=>1)
 
post
 /articles/1/comments
 create
 comments_url(:article_id=>1)
 
Get
 /articles/1/comments/new
 new
 new_comments_url(:article_id=>1)
 
Get
 /articles/1/comments/99
 show
 comments_url(:article_id=>1,:id=>99)
 
Put
 /articles/1/comments/99
 update
 comments_url(:article_id=>1,:id=>99)
 
Get
 /articles/1/comments/99;edit
 edit
 edit_comments_url(:article_id=>1,:id=>99)
 
Delete
 /articles/1/comments/99
 destroy
 comments_url(:article_id=>1,:id=>99)
 

 

7 选择数据表现形式( respond_to )
非 rest 风格的路由设置
map.store “/store/:action/:id.:format”, :id=>nil, :format=>nil

在控制器中用代码快如 action 中 show 控制器

def show

respond_to do |format|

       format.html

       format.xml {render :xml => @product.to_xml }

              format.yaml { render :text => @product.to_yaml }

       end

end

针对 /store/show/1.html, /store/show/1.xml, /store/show/1.yaml 将返回相应格式的内容

Rest 风格的路由设置
map.resources 所指定的路由规则默认开启了这项功能

8 路由测试
       断言指定选项会生成指定的路径

assert_generates(“/store”, :controller => “store”, :action => “index”)

断言给定的路径,路由将分析成一个 hash

Assert_recognizes({“controller”=>”store”, “action”=>”index”}, “/store”)

将上述两个断言结合起来即正向检查又反相检查

Assert_routing(“/store”, :controller =>”store”, :action => “index”)


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gift5168xf/archive/2009/10/08/4643062.aspx

分享到:
评论

相关推荐

    电动汽车充电站选址定容优化:基于MATLAB建模求解与成本最小化策略,电动汽车充电站选址定容优化:基于MATLAB的最优规划模型及初学者指南,电动汽车充电站的最优选址定容MATLAB程序 以规划期内充

    电动汽车充电站选址定容优化:基于MATLAB建模求解与成本最小化策略,电动汽车充电站选址定容优化:基于MATLAB的最优规划模型及初学者指南,电动汽车充电站的最优选址定容MATLAB程序 以规划期内充电站的总成本 (包括投资、运行和维护成本)和网损费用之和最小为目标,考虑了相关的约束条件,构造了电动汽车充电站最优规划的数学模型。 从34个位置中,选取7个充电站地址,进行选址优化 关键词:电动汽车;充电站;选址和定容 程序注释清晰,适合初学者学习 ,电动汽车; 充电站选址定容; MATLAB程序; 规划模型; 成本优化; 网损费用; 初学者学习; 程序注释清晰,基于MATLAB的电动汽车充电站选址定容优化程序:成本最小化与约束条件下的选址策略

    基于源荷双重不确定性的虚拟电厂日前鲁棒经济调度优化模型基于MATLAB+CPLEX仿真平台求解,基于源荷双重不确定性的虚拟电厂日前鲁棒优化经济调度策略,MATLAB代码:计及源-荷双重不确定性的电厂日

    基于源荷双重不确定性的虚拟电厂日前鲁棒经济调度优化模型基于MATLAB+CPLEX仿真平台求解,基于源荷双重不确定性的虚拟电厂日前鲁棒优化经济调度策略,MATLAB代码:计及源-荷双重不确定性的电厂日前鲁棒优化调度 关键词:电厂 微网调度 鲁棒调度 源荷不确定性 日前经济调度 参考文档:《含电动汽车和风电机组的发电厂竞价策略_杨甲甲》参考其鲁棒模型的化简求解部分,即附录中的鲁棒问题化简求解的全过程; 《Virtual power plant mid-term dispatch optimization》参考燃气轮机、储能部分模型 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一个电厂或者微网单元的日前鲁棒经济调度的模型,考虑了光伏出力和负荷功率的双重不确定性,采用鲁棒优化法处理不确定性变量,构建了电厂鲁棒优化调度模型。 具体来看,不确定性考虑的是目标函数以及约束条件中均含有不确定变量,设置鲁棒系数可以调节多重不确定结果,化简的过程也很清晰,程序实现效果良好,一行一注释。 ,关键词:虚拟电厂; 鲁棒优化调度; 源荷不确定性; 日前经济调度; 微网调度; 光伏出力

    基于遗传算法的储能优化配置研究:成本模型分析与最优运行计划求解(含风光机组),基于遗传算法的储能优化配置:成本模型分析与最优运行计划求解(含风光机组),MATLAB代码:基于遗传算法的储能优化配置(可

    基于遗传算法的储能优化配置研究:成本模型分析与最优运行计划求解(含风光机组),基于遗传算法的储能优化配置:成本模型分析与最优运行计划求解(含风光机组),MATLAB代码:基于遗传算法的储能优化配置(可加入风光机组) 关键词:储能优化配置 遗传算法 储能充放电优化 参考文档:无明显参考文档,仅有几篇文献可以适当参考 仿真平台:MATLAB 平台采用遗传算法实现求解 优势:代码注释详实,适合参考学习,非目前烂大街的版本,程序非常精品,请仔细辨识 主要内容:建立了储能的成本模型,包含运行维护成本以及容量配置成本,然后以该成本函数最小为目标函数,经过遗传算法求解出其最优运行计划,并通过其运行计划最终确定储能容量配置的大小,求解采用的是遗传算法,求解效果极佳,具体可以看图 ,关键词:MATLAB代码;遗传算法;储能优化配置;储能充放电优化;成本模型;运行维护成本;容量配置成本;最优运行计划;求解效果。,基于遗传算法的储能优化配置MATLAB代码:精细优化与成本最小化研究

    设计模式- 观察者模式 Observer Pattern详解

    如本文所描述,设计模式经典实现、三种其他实现方式以及六个方向的问题优化的详细代码

    高性能DSP28335驱动的移相全桥同步整流技术:高效电源输出与轻量级结构设计,基于DSP28335的高效同步整流电源系统:移相全桥驱动,低损耗输出近94%效率,铝基板+平面变压器设计挑战与低成本方案

    高性能DSP28335驱动的移相全桥同步整流技术:高效电源输出与轻量级结构设计,基于DSP28335的高效同步整流电源系统:移相全桥驱动,低损耗输出近94%效率,铝基板+平面变压器设计挑战与低成本方案探索,自研DSP28335+移相全桥+纯程序实现同步整流。 目前在DSP固有损耗2W的情况下,输出120W效率接近94%。 就是铝基板+平面变压器玩起来太贵,不好做小批量,335现在也很贵。 基于035的低成本版本近期开始设计~~~ 数字电源demo,输入18-32V,输出12V15A,伍尔特电感+平面变压器+板上平面变压器辅助电源,隔离半桥驱动+隔离采样,用于技术交流和样机平台搭建。 采用上下叠板架构,上板为4层DSP控制板,下板为单层功率铝基板,散热极佳。 ,自研DSP28335; 移相全桥; 纯程序同步整流; 效率接近94%; 低成本版本设计; 数字电源demo; 上下叠板架构; DSP控制板; 散热。,自研DSP28335控制下的同步整流技术优化:效率接近94%的电源解决方案

    PPT模板 -星际郎中:守护星际生命.pptx

    PPT模板 -星际郎中:守护星际生命.pptx

    19考试真题最近的t41.txt

    19考试真题最近的t41.txt

    Xilinx ug476-7Series-Transceivers

    Xilinx公司推出的7系列FPGA中的GTX/GTH收发器是用于高速串行通信的收发器模块,能够实现数据的高速串行传输。本资料为Xilinx提供的用户手册ug476_7Series_Transceivers

    GearTrain 提供了灵活的推理框架, 支持视频、图片推理方式 基于 GearTrain 用户可像齿轮一样自由组合各种Pipeline,实现各种推理任务

    GearTrain 提供了灵活的推理框架, 支持视频、图片推理方式。基于 GearTrain 用户可像齿轮一样自由组合各种Pipeline,实现各种推理任务

    一个测试的网页布局,作为备份

    一个测试的网页布局,作为备份

    基于SSM+redis的awd对抗系统 .zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用

    内蒙古自治区公共数据资源登记管理暂行办法.docx

    内蒙古自治区公共数据资源登记管理暂行办法.docx

    MATLAB下基于遗传算法的有序充放电优化策略:实现电动汽车充电费用最低与负荷峰谷平衡,基于遗传算法的电动汽车有序充放电优化策略:精英自适应混合算法实现负荷均衡与费用最小化,MATLAB代码:基于遗传

    MATLAB下基于遗传算法的有序充放电优化策略:实现电动汽车充电费用最低与负荷峰谷平衡,基于遗传算法的电动汽车有序充放电优化策略:精英自适应混合算法实现负荷均衡与费用最小化,MATLAB代码:基于遗传算法的电动汽车有序充放电优化 关键词:遗传算法 电动汽车 有序充电 优化调度 参考文档:《精英自适应混合遗传算法及其实现_江建》算法部分;电动汽车建模部分相关文档太多,自行搜索参考即可; 仿真平台:MATLAB 主要内容:代码主要做的是利用遗传算法对电动汽车有序充电进行优化;优化目标包括充电费用最低,充电时间达到要求(电动汽车充到足够的电)考虑电动汽车充电对电网负荷的影响,使负荷峰谷差最小。 分别利用传统、精英和变异遗传算法进行对比算法优劣,比较迭代结果,优化变量为起始充电时刻 ,关键词:MATLAB代码; 遗传算法; 电动汽车; 有序充电; 优化调度; 充电费用; 充电时间; 电网负荷; 精英自适应混合遗传算法; 迭代结果; 优化变量。,基于遗传算法的电动汽车有序充放电优化调度策略研究

    基于OpenCV的车牌识别系统的设计与实现.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款

    STM32开发:IIR带阻滤波器设计与实现,含巴特沃斯和切比雪夫滤波器MATLAB程序,STM32开发中IIR带阻滤波器的实现与巴特沃斯滤波器设计详解:附MATLAB程序,STM32开发 IIR带阻滤

    STM32开发:IIR带阻滤波器设计与实现,含巴特沃斯和切比雪夫滤波器MATLAB程序,STM32开发中IIR带阻滤波器的实现与巴特沃斯滤波器设计详解:附MATLAB程序,STM32开发 IIR带阻滤波器 STM32实现IIR无限冲击响应带阻滤波器设计,巴特沃斯滤波器,代码工整,自编代码,注释详细,赠送巴特沃斯和切比雪夫IIR带阻滤波器MATLAB程序 ,STM32开发; IIR带阻滤波器; 无限冲击响应; 巴特沃斯滤波器; 自编代码; 注释详细; MATLAB程序,STM32中IIR带阻滤波器设计与实现

    电商系统(包含手机端,前端,后端).zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用

    机器学习【KMeans聚类分析实战】用户分群聚类详解-SSE、CH 指数、SC全解析,实战电信客户分群案例

    包含输入输出,可视化案例。聚类算法

    基于PLC的地铁排水控制系统设计:梯形图程序、接线图与IO分配组态全解析,基于PLC的地铁排水控制系统设计:梯形图程序、接线图与IO分配组态全解析,No.505 基于PLC的地铁排水控制系统设计电气控

    基于PLC的地铁排水控制系统设计:梯形图程序、接线图与IO分配组态全解析,基于PLC的地铁排水控制系统设计:梯形图程序、接线图与IO分配组态全解析,No.505 基于PLC的地铁排水控制系统设计电气控制程序 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面 ,505; PLC地铁排水控制; 电气控制程序; 梯形图程序; 接线图原理图; IO分配; 组态画面,PLC驱动的地铁排水系统设计:电气控制程序详解及图解

    元器件基础知识文档(适合初学者学习)

    报告电子元器件手册目录,常见电子元器件的参考资料以及70种电子元器件封装等等,非常适合初学者进行学习和掌握。希望大家都能够在电子领域进行深耕。

Global site tag (gtag.js) - Google Analytics