ApplicationController 中定义的操作未找到。

3
我正在创建一个Rails 4.2应用程序,在网页上打印“Hello World”。但是在运行页面时,我遇到了以下错误:
未知操作
无法找到ApplicationController的“hello”操作
这些是我更新的文件:
application_controller.rb
class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  def hello
    render text: "hello, world!"
  end
end

routes.rb

Rails.application.routes.draw do
  # You can have the root of your site routed with "root"
  root 'application#hello'
end

你可以从这个问题中找到答案:https://dev59.com/Sm445IYBdhLWcg3wmLhe - huzefa biyawarwala
通常在Tails中,您将定义一个名为“welcome”的新控制器。然后,在“route.rb”中定义“root :to =>“welcome#index””。 - devanand
4个回答

2
如果你正在使用Cloud9并且遵循www.railstutorial.org上的教程,那么你可能已经正确编写了代码。你只需要在开发环境的中心顶部按下“运行”按钮即可。提示:它是绿色的。
这个细节在教程中被省略了,但是显然,你在IDE中所做的编辑直到你点击“运行”才会被保存。这似乎是一个非常低的门槛,但我花了几个小时去谷歌和自我怀疑。所以你可以试试这个方法。

1
使用这种方式。
Rails.application.routes.draw do
  root to: 'application#hello'
end

0

我认为问题在于你正在调用render text: ...,也就是说你没有允许Rails完成其渲染过程。如果我错了,我会很乐意删除这个答案;错误似乎太简单了,不可能是语法问题。

  1. 重新启动服务器
  2. 执行以下操作:

-

#config/routes.rb
root "application#index"

#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
end

#app/views/application/index.html.erb
Hello World

您可以从这个答案中了解到,您的控制器不需要方法,只需加载视图即可。


0

你的根路由配置正确,请仔细检查控制器和操作名称是否完全为ApplicationControllerhello

但是ApplicationController被设计为基础控制器,你应该在这里放置通用逻辑,并从中扩展你的控制器。

如果你使用生成器创建控制器,它将自动完成。

你可以在官方文档中找到更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接