Ruby on rails RubyonRails:未按预期加载视图
我是Rails(和这个网站)的新手,正在学习Lynda.com教程。我遇到了很多问题,因为教程是在大约3年前编写的,似乎编程语言在这一过程中发生了变化。幸运的是,我已经找到了解决大多数问题的方法,但有一个问题阻碍了我前进 版本: Ruby 2.0.0p195 Mysql 14.14 dis 5.6.12 创业板2.0.3 我正在尝试连接到演示文件夹中的不同.html.erb页面,但脚本中的def无法识别这些页面 此处的可视示例: 我的理解是,“def hello”和“def other_hello”应该自动在我的应用程序视图下的演示文件夹中查找hello.html.erb和其他_hello.html.erb文件。但是,当我运行服务器并在地址栏中键入这些位置时,Firefox无法使用localhost:3000/demo/hello或localhost:3000/demo/other_hello找到它们。我确信这是一件非常简单的事情,但在两天的网络搜索之后,我还没有找到答案 作为故障排除工作的一部分,我在“def index”部分下尝试了已注释掉的每个变量。我可以从“def index”部分进入每页,而不是在“def hello”或“def other_hello”部分进入 更新: 我的目标是为我的问题找到一个动态的答案。在Rails 2中,有一行优雅的代码处理所有传入的信息 我希望这是有道理的。 如果你有什么建议,请告诉我Ruby on rails RubyonRails:未按预期加载视图,ruby-on-rails,ruby,rails-routing,Ruby On Rails,Ruby,Rails Routing,我是Rails(和这个网站)的新手,正在学习Lynda.com教程。我遇到了很多问题,因为教程是在大约3年前编写的,似乎编程语言在这一过程中发生了变化。幸运的是,我已经找到了解决大多数问题的方法,但有一个问题阻碍了我前进 版本: Ruby 2.0.0p195 Mysql 14.14 dis 5.6.12 创业板2.0.3 我正在尝试连接到演示文件夹中的不同.html.erb页面,但脚本中的def无法识别这些页面 此处的可视示例: 我的理解是,“def hello”和“def other_hel
向zeantsoi和Muntasim大声呼喊,感谢你在这件事上的帮助。我会给你们每人一分,但网站不允许我这样做 您缺少到
DemoController
操作的路由。按如下方式添加它们:
# config/routes.rb
match 'demo/hello', 'demo#hello'
match 'demo/other_hello', 'demo#other_hello'
有了这些路由,您可以通过分别访问路径demo/hello
和demo/other\u hello
来访问hello
和other\u hello
您可以考虑的另一件事是在路由中添加一个名称,这极大地促进了控制器和视图的路由:
# config/routes.rb
match 'demo/hello', 'demo#hello', :as => demo_hello
然后,在视图(或控制器)中,可以使用以下命令:
demo_hello_path #=> /demo/hello
demo_hello_url #=> hostname/demo/hello
编辑:
如果希望动态路由到控制器和操作,可以使用以下匹配模式:
# config/routes.rb
match ':controller/:action'
请注意,根据执行此路由的顺序,它可能会覆盖(或被其他硬编码路由覆盖)
仅供参考,来自官方Rails路由指南的有助于了解事物的映射方式。您缺少到
DemoController
操作的路由。按如下方式添加它们:
# config/routes.rb
match 'demo/hello', 'demo#hello'
match 'demo/other_hello', 'demo#other_hello'
有了这些路由,您可以通过分别访问路径demo/hello
和demo/other\u hello
来访问hello
和other\u hello
您可以考虑的另一件事是在路由中添加一个名称,这极大地促进了控制器和视图的路由:
# config/routes.rb
match 'demo/hello', 'demo#hello', :as => demo_hello
然后,在视图(或控制器)中,可以使用以下命令:
demo_hello_path #=> /demo/hello
demo_hello_url #=> hostname/demo/hello
编辑:
如果希望动态路由到控制器和操作,可以使用以下匹配模式:
# config/routes.rb
match ':controller/:action'
请注意,根据执行此路由的顺序,它可能会覆盖(或被其他硬编码路由覆盖)
仅供参考,官方铁路路线指南中的有助于了解事物的映射方式。您似乎还没有定义路线。您可以通过运行rake routes来确保,并查看您的路由是否存在。否则,使用以下方法定义路线:
# config/routes.rb
match 'demo/hello', 'demo#hello'
match 'demo/other_hello', 'demo#other_hello'
或者简单地说:
get 'demo/hello'
get 'demo/other_hello'
看来你还没有定义你的路线。您可以通过运行rake routes来确保,并查看您的路由是否存在。否则,使用以下方法定义路线:
# config/routes.rb
match 'demo/hello', 'demo#hello'
match 'demo/other_hello', 'demo#other_hello'
或者简单地说:
get 'demo/hello'
get 'demo/other_hello'
是路由将页面连接到控制器操作。在Rails2.x中,默认规则允许您所说的假设,但在几年前Rails3.Ah中就删除了。这就是我所缺少的。该功能已被删除,我正在使用一个过时版本的Rails教程。很高兴知道,这样我就不会让自己发疯了。这个答案有效地回答了你的问题吗?如果是这样的话,你能考虑接受它吗?这样做既有帮助又有礼貌:我在说话时检查答案。请参阅原始问题下的评论。是的,将页面连接到控制器操作。在Rails2.x中,默认规则允许您所说的假设,但在几年前Rails3.Ah中就删除了。这就是我所缺少的。该功能已被删除,我正在使用一个过时版本的Rails教程。很高兴知道,这样我就不会让自己发疯了。这个答案有效地回答了你的问题吗?如果是这样的话,你能考虑接受它吗?这样做既有帮助又有礼貌:我在说话时检查答案。请参阅原始问题下的注释。当我运行Rake路由时,Rake被中止,我会收到一条“缺少:控制器”消息以及一个列表尝试。请参阅原始问题下的注释。使用“匹配”:控制器(/:操作(/:id))“`要允许动态段访问更多信息,当我运行Rake路由时,Rake被中止,我会收到一条“missing:controller”消息以及一个列表尝试。请参阅原始问题下的注释。使用`match':controller(/:action(/:id))”`要允许动态段访问更多信息,请首先访问,谢谢你的答复。我非常感谢你在这件事上的帮助。我已经看过了最初的回答,我可以得到“硬连线”的答案,但我正在寻找一个动态代码解决方案。原始代码行“匹配”:控制器(/:操作(/:id)(:格式)