首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rails - 没有路由匹配{:action =>"new",:controller =>"comments"}

在云计算领域,Rails是一个非常流行的后端框架,用于构建Web应用程序。在Rails中,路由匹配是用于处理HTTP请求的机制,通过路由匹配,Web应用程序可以确定如何处理特定的URL请求。

在Rails中,路由匹配是通过映射路由(Route)来实现的。映射路由定义了Web应用程序中的URL和HTTP方法(如GET、POST、PUT、DELETE等)之间的映射关系。在Rails应用程序中,路由可以通过以下两种方式来定义:

  1. 使用map.connect方法来定义单个路由。
代码语言:ruby
复制

map.connect 'articles/:id', :controller => 'articles', :action => 'show'

代码语言:txt
复制

上述代码定义了一个名为articles的控制器,当请求的URL包含参数id时,将会执行show方法。

  1. 使用resources方法来定义一组路由。
代码语言:ruby
复制

resources :users, :posts

代码语言:txt
复制

上述代码定义了一组名为usersposts的控制器,它们可以处理GETPOSTPUTDELETE等HTTP请求。

在Rails中,路由匹配的作用是确定Web应用程序如何处理特定的URL请求,并根据请求的方法和URL路径将请求路由到相应的控制器和方法。这有助于提高Web应用程序的可维护性、可读性和可扩展性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Rails路由

#action形式,如果是表示动作的符号,则还需要添加controller选项: get 'profile', to: :show, controller: 'users' 控制命名空间和路由 把控制器放入同一命名空间是非常常见的..., only: [:index, :new, :create] end resources :comments, only: [:show, :edit, :update, :destroy] 当然,...user_id=2 请求也会映射到 Photos#show 控制器动作上,这时params的值是 {controller: 'photos', action: 'show', id: '1', user_id...路由通配符用于指定特殊参数,这个参数会匹配路由的所有剩余部分: get 'photos/*other', to: 'photos#unknown' 这个路由匹配 photos/12 和 /photos...和 edit 动作上 限制创建的路由 Rails 默认会为每个 REST 式路由创建7个默认动作,可以使用 :only 和 :except 选项来微调此行为。

4.4K20

ASP.NET Core 2.2 : 十六.扒一扒2.2版更新的新路由方案

如下图,我们默认情况下只配置了一个"{controller=Home}/{action=Index}/{id?}"...这样的路由,默认的HomeController有三个action,添加了一个名为FlyLoloController的controller并添加了一个带属性路由action,最终生成了7个Endpoint...当然,这里只是用默认程序举了个简单的例子,实际项目中可能会有更多的路由模板注册、会有更多的ControllerAction以及属性路由等。...二者区别就是对于_actions.ActionDescriptors.Items(所有的action的信息)的匹配上,原版是先根据路由模板匹配后,再根据ActionDescriptors判断是否存在对应的...Controlleraction,而新版是先利用了action信息与路由模板匹配,然后再用请求的URL进行匹配,由于这样的工作只在第一次请求的时候执行,所以虽然没有做执行效率上的测试,但感觉应该是比之前快的

66630

精通MVC3摘译(2)-生成URL

}/{action}", new { myVar = "true" }); 要匹配这个路由,我们必须小心,要么不提供myVar的值,要么确定我们提供的值就是默认值。...由此,定义路由的时候,越是具体特定的路由就要放在越前面。如果你生成的URL没有路由匹配,那么你的链接属性就是空的,如下: About this application。...null) 你可能觉得路由系统不会匹配路由,因为我们没有提供color片段的值,并且也没有定义它的默认值。...之前提过,路由系统在处理URL的时候对controlleraction没有任何概念,这就可以让路由系统可以更广泛的使用在其他ASP.NET应用程序。...@Html.RouteLink("Routed Link", new { controller = "Home", action = "About", id="MyID"}) RouteLink 方法没有参数来表示

79710

转--使用Revel(go)开发网站

官网号称请求的吞吐量是Rails的3到10倍。Revel的性能好,在开发方面也提供了非常全面的工具。常用的路由、模板、session、参数解析、等几乎都有,甚至还提供了一个测试框架。...我们在添加路由的文件中需要注意最后的一行。* /:controller/:action :controller....:action *表示的是网络请求的方法:GET、POST、DELETE等,后面的/:controller/:action是网络请求的路径,最后的:controller....:action是用户定义的controller和在其中的action。所以按照这个路径访问的内容,如果controlleraction都存在的话,是可以访问到的。...也就是说,如果我们没有添加任何的路由,只用这个默认的生成的路由也是可以访问到blogs的。可以试一下,在浏览器访问localhost:9000/blogs/blogs。

1.1K100

ASP.NET Web API编程——路由

例如 api/{controller}/public/{category}/{id} 设置defaults: new { category = "all" } 路由词典 如果Web API匹配到一个已存在的路由模板...匹配示例 对于api/{controller}/{id} 首先匹配字符串api,然后匹配控制器(controller),第三匹配以HTTP方法开头的操作(Action),占位符id匹配Action接收的参数...对于api/{controller}/{action}/{id} 首先匹配字符串api,然后匹配控制器(controller),最后匹配操作(Action),占位符id匹配Action接收的参数。...根据获得的控制器(Controller)名查找Web API中的控制器(controller)。如果没有查找到控制器(controller)名或者匹配到了多个,那么返回错误。...对于来自于URI的参数,要确保URI确实包含对应参数的值,这个值可能在路由词典中或查询字符串中。 对于可选的参数,如果绑定不能从URI中获得参数的值,对于操作(Action)的选择也没有影响。

1.7K80

ASP.NET Core 入门教程 3、ASP.NET Core MVC路由入门

当应用接收到请求时,会在路由管道(路由中间件)中执行路由匹配,并将请求交给对应的控制器去处理。 另外,需要特别注意的是,路由匹配顺序是按照我们定义的顺序从上之下匹配的,遵循是的先配置先生效的原则。...路由匹配通过后,需要根据这两个参数将当前请求交由对应的Controller+Action去处理。所以,这两个参数缺少任何一个,都会导致路由无法正常工作。..., defaults: new { controller = "Tutorial", action = "Welcome", name = "ken" } ); 4、带有正则表达式约束的路由 路由配置...类中进行的集中式路由配置,集中配置的路由,除了template中没有配置{controller}参数,默认都是对所有控制器(Controller)生效的。...尤其是对URL没有友好度要求的应用,例如:后台管理系统 分散式配置/绑定式配置 对于集中式路由配置的方式,如果某个Controller/Action配置了特殊路由,对于代码阅读就会不太友好。

1.5K30

ASP.NET Core 入门教程 3、ASP.NET Core MVC路由入门

当应用接收到请求时,会在路由管道(路由中间件)中执行路由匹配,并将请求交给对应的控制器去处理。 另外,需要特别注意的是,路由匹配顺序是按照我们定义的顺序从上之下匹配的,遵循是的先配置先生效的原则。...路由匹配通过后,需要根据这两个参数将当前请求交由对应的Controller+Action去处理。所以,这两个参数缺少任何一个,都会导致路由无法正常工作。..., defaults: new { controller = "Tutorial", action = "Welcome", name = "ken" } ); 4、带有正则表达式约束的路由 路由配置...类中进行的集中式路由配置,集中配置的路由,除了template中没有配置{controller}参数,默认都是对所有控制器(Controller)生效的。...尤其是对URL没有友好度要求的应用,例如:后台管理系统 分散式配置/绑定式配置 对于集中式路由配置的方式,如果某个Controller/Action配置了特殊路由,对于代码阅读就会不太友好。

1.1K30

ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习

正是因为我们建立了这种URL结构的识别规则,,所以能够识别出 Controller是home, action是index, id没有则为默认值""。   ...由于网站中,并没有Home-Index这个Controller,所以也就出现了刚刚那个404页面。...}", new { controller = "Hotel", action = "default", hotelid = "" } ); // 网站首页默认匹配 routes.MapRoute...( "网站首页", "{*values}", new { controller = "Home", action = "index" } );   (4)我们可以分析一下上面的路由规则所实现的功能...,也就是将Home-Index作为Controller的名称进行匹配,这也就证明了为什么我们输入这个请求不会匹配第二条Default2的路由规则出现刚刚那个404页面了。

1.7K30

Asp.Net Web API 2第六课——Web API路由和动作选择

如果你创建了一个Web API项目,发现有一些请求没有按照你期望的方式被路由,希望这篇文章将对你有所帮助。      ...本文主要分为三个阶段:   1.匹配URI到一个Route Template。   2.选择一个Controller。   3.选择一个Action。   ...这里有两个特殊的占位符:“{controller}”和“{action}”。 “{controller}”提供控制器名。 “{action}”提供动作名。...在匹配路由阶段,这个特殊的"{controller}" and "{action}"占位符的处理和其他占位符是一样的。它们用另外的值被简单的存储在字典中。   ...如果没有匹配类型,或有多个匹配,这个框架会给客户端返回一条错误。

92120
领券