Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Routes Rails 3.0:向控制器添加新操作_Routes_Ruby On Rails 3 - Fatal编程技术网

Routes Rails 3.0:向控制器添加新操作

Routes Rails 3.0:向控制器添加新操作,routes,ruby-on-rails-3,Routes,Ruby On Rails 3,在Rails3.0之前,向控制器添加新操作很容易 您只需将一个新方法foobar添加到控制器类(称为mycontroller)。 在该控制器的视图文件夹中添加一个html文件,foobar.html.erb 然后,如果将浏览器指向../mycontroller/foobar,则一切正常 但是,在rails 3.0中,当我添加如上所述的新操作时,出现以下错误: 没有路径匹配“/mycontroller/foobar” rails 3.0发生了什么变化?我做错了什么?错误说明了一切。您的config

在Rails3.0之前,向控制器添加新操作很容易

您只需将一个新方法
foobar
添加到控制器类(称为mycontroller)。 在该控制器的视图文件夹中添加一个html文件,
foobar.html.erb

然后,如果将浏览器指向
../mycontroller/foobar
,则一切正常

但是,在rails 3.0中,当我添加如上所述的新操作时,出现以下错误:

没有路径匹配“/mycontroller/foobar”


rails 3.0发生了什么变化?我做错了什么?

错误说明了一切。您的config/routes.rb中没有相应的路由。检查默认路由是否已注释掉。如果是这样,您需要为新操作添加路由。

将此添加到
路由。rb

get 'mycontroller/foobar'
这将路由URL
http://mysite.com/foobar
到使用HTTP GET的
foobar
操作

更多信息:

  • 请注意,在控制器中定义
    def foobar
    并非严格要求(除非在显示视图之前需要在
    foobar
    中执行某些操作),但视图必须存在。换句话说,即使控制器中不存在
    def foobar
    方法,视图
    foobar.html.erb
    仍将呈现

  • 这是一本书

  • 此外,如果您还不知道,您可以列出应用程序知道的有关使用
    rake路由的所有路由。因此,如果
    rake routes
    的输出没有列出到某个控制器/操作的路由,则会出现“无路由匹配”错误