Rails 4必备培训:重定向错误

时间:2015-01-14 13:34:08

标签: ruby-on-rails ruby-on-rails-3 redirect ruby-on-rails-4 ruby-on-rails-4.2

您好我收到以下错误:

未知行动 行动' other_hello'找不到DemoController

输入此重定向代码后的

(与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

服务器出现以下错误:

开始GET" / demo / other_hello" for :: 1 at 2015-01-16 04:47:25 +0800

AbstractController :: ActionNotFound(无法为DemoController找到action' other_hello')

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

1 个答案:

答案 0 :(得分:0)

那么这意味着你的路线要求没有在你的控制器上找到合适的动作。仔细检查文件中控制器的拼写,可以是DemoController或(最好)复数DemosController

修改

正在发生的事情是您的rails路由器正在将您的应用程序指向未知路径。编辑rails路由器看起来像这样:

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

您在Rails应用程序中执行的每个主要操作(除少数边缘情况外)都将从您的路由器开始,然后向下移动到您的视图。当Rails无法找到完成请求所需的位置时,会抛出UnknownAction错误。在这种情况下,你还没有指示它去哪里。

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

编辑2

如果您希望在other_hello操作中更好地编写重定向,只需添加redirect_to root_path即可。您可以随时了解有关路径的更多信息,但只需知道root_path是您应用中主页的代表,您写的是:root 'demo#index'