0

您好我收到以下错误:

未知操作找不到 DemoController 的操作“other_hello”

输入此重定向代码(与 Rails 4 基本培训中显示的完全相同)后,我使用的是 rails 版本 4.2.0

def other_hello
  redirect_to(:controller => 'demo', :action => 'index')
end

def lynda
  redirect_to('http://lynda.com')
end

所以基本上它不会因为某种原因重定向我?

route.rb 有以下路线:

  root 'demo#index'

   match ':controller(/:action(/:id))', :via => :get

服务器给出以下错误:

在 2015-01-16 04:47:25 +0800 开始为 ::1 获取“/demo/other_hello”

AbstractController::ActionNotFound(无法为 DemoController 找到操作“other_hello”):

它在任何地方都没有显示重定向的迹象:(

4

1 回答 1

0

所以这意味着您的路线需求没有在您的控制器上找到合适的操作。仔细检查文件中控制器的拼写,这将是DemoController或(最好是)复数的DemosController.

编辑

发生的事情是您的 Rails 路由器将您的应用程序定向到未知路径。编辑您的 Rails 路由器,使其看起来像这样:

match '/other_hello', to: 'demo#other_hello', via: :get

您在 Rails 应用程序中执行的每个主要操作(除了一些边缘情况)都将从您的路由器开始,并向下工作到您的视图。当RailsUnknownAction找不到完成您的请求所需的位置时,它会抛出错误。在这种情况下,您只是还没有指示它去哪里。

进行这些更改,并确保重新启动服务器;每次更改 Rails 应用程序中的路由时,您都需要这样做。

编辑 2

如果您想要一种更好的方式在other_hello操作中编写重定向,只需输入redirect_to root_path. 随着您的进行,您将了解有关路径的更多信息,但只需知道这root_path是您的应用程序中主页的表示,您在其中写道:root 'demo#index'

于 2015-01-15T06:11:48.680 回答