Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails:未按预期加载视图_Ruby On Rails_Ruby_Rails Routing - Fatal编程技术网

Ruby on rails RubyonRails:未按预期加载视图

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

我是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中,有一行优雅的代码处理所有传入的信息

我希望这是有道理的。 如果你有什么建议,请告诉我


向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)(:格式)