routes.rb和link_to的一些规则

rails文档中描述了一个知识,link_to方法用于产生链接,但链接是根据routes.rb中的路由规则来产生的。这又分为面向资源和非面向资源两种产生链接的方法。比如

routes.rb文件中有两条规则
resources :users
get ‘cont/act/:name‘,:to => ‘controller#action‘

相对应如果两个link_to如下:

<%= link_to "测试resource路由",:controller=>:users,:action => :show,:id => 1 %>
<%= link_to "测试非resource路由",:controller => :controller,:action => :action ,:id => 1%>

产生的链接为:

<a href="/users/1">测试resource路由</a>
<a href="/cont/act/1">测试非resource路由</a>

注意,第一个链接不是users/show/1,证明产生的链接是根据routes.rb区别了面向资源和一般路由两种方法来产生的。

时间: 2025-02-01 19:43:25

routes.rb和link_to的一些规则的相关文章

【基础】MVC路由规则

一.RouteData解析过程 在ASP.NET MVC中,服务器收到来自客户端的请求后,会经过一些列的处理拿到请求的数据,比如在Pipeline 管线事件中,通过订阅适当的事件,将HttpContext作为参数传入HttpContextWrapper进行封装,然后取得当前路由集合的数据RouteData进行解析,拿到具体的参数,包括请求路径.请求的参数.IRouteHandler等,通过IRouteHandler的GetHttpHandler返回一个IHttpHandler对象,通过该对象对请

MVC 多级目录(控制器) 路由重写 及 多级Views目录 的寻找视图的规则

转自:[原]Asp.net Mvc   多级控制器 路由重写 及 多级Views目录 的寻找视图的规则 asp.net mvc 为了更好的控制views的页面存放,和控制器的可读性,需要分开多级目录来存放. 1.那么我们再来看我们需要的访问方式,如下图 如果我们要访问Admin下的TestController里面的Index页面,那么我们输入Test/Index,这个肯定不行的.因为TestController根本就不在Controllers的根目录下,而是在Controllers/Admin下

MVC的URL路由规则

Routing的作用:它首先是获取到View传过来的请求,并解析Url请求中Controller和Action以及数据,其次他将识别出来的数据传递给Controller的Action(Controller的方法).这是Routing组件的两个重要的作用! 下面我们从几个例子来讲解一下Url路由的使用. MapRoute()有6个方法可以重载,下面举5个例子相应介绍! 实例一:首先讲解的是系统默认提供的路由格式,下面是系统给的默认代码: public static void RegisterRou

MVC中url路由规则

Routing:首先获取视图页面传过来的请求,并接受url路径中的controller和action以及参数数据,根据规则将识别出来的数据传递给某controller中的某个action方法 MapRoute()有6个方法可以重载 方法1:系统提供的默认路由规则格式 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); r

Mvc多级Views目录 asp.net mvc4 路由重写及 修改view 的寻找视图的规则

一般我们在mvc开发过程中,都会碰到这样的问题.页面总是写在Views文件夹下,而且还只能一个Controller的页面只能写在相应的以Controller名命名的文件夹下.如果我们写到别处呢?那么肯定会报错.这是mvc中一个约定俗成的一个规定,必须这样写. 1.正常的项目目录,如下图: 我们要访问Index页面,只需要输入Home/Index就可以访问了.我们之所以能够这样访问,是因为我们在项目创建之初系统就默认配置了一个默认的路由.我们可以按照这个默认的路由规则进行访问. 2.那么我们再来看

[AWDwR4]13章 Playtime1 的实现

13.PlayTime 1: 向orders表加入ship_date字段,当OrdersController更新这个值后发送一个emial通知.这个官方网站上没有提供参考的答案,论坛里有简单版本我自己实现了一个稍微复杂一点的.  我的思路是在每个order的show模板中加入一个按钮 Ship it now,每个order只有一次ship的机会,这样就避免了重复ship.  step1:  先在 orders_controller 中手动加入ship这个action: # PUT /orders

15--helpers方法

前面我们讲的link_to.form_for.form_tag都是rails的前端的helpers方法(翻译过来就是辅助方法).helpers方法还有很多,当然这节课我们要讲的helpers方法不是前端使用的helpers方法,而是控制器或模型中能够直接调用的一些辅助方法,并且我们能够自定义方法的名称以及里面的一些功能,这样的helpers方法我们可以称之为自定义的helpers方法(下面我们都叫自定义方法好了). 前面我们讲过我们可以将自定义的库文件写在lib文件夹中,但是这种文件一般代码量很

ruby on rails 命令行下看效果

前几天学习rails的时候用的是IDE开发,没感觉出来rails的效率到底有多快.今天我使用命令行试了下,结果我惊呆了,在没有写一行代码的情况下,居然完成了一个简单的增删改查的模型. 如下: 首先是配置环境我这里就不罗嗦了. 执行命令:rails new blog 创建一个文件名为blog的mvc的项目结构. rake db:create 创建数据库(这里就先直接用下sqllite) rails generate controller home index 创建名称为home的controlle

为应用增加登录注册功能 ruby on rails

(1)新增gem gem 'devise' (2)添加devise配置文件 /workspace/shop:$ rails generate devise:install User create config/initializers/devise.rb create config/locales/devise.en.yml =============================================================================== Some s