您好我收到以下错误:
未知行动 行动' 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')
它没有显示任何地方重定向的迹象:(
答案 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'