1

我是 ruby​​ on rails 的新手。我在路线上有问题。我有一个导航菜单。我家有一个控制器。在家庭控制器内部,我有几个动作/方法。因此,当用户单击主页时,它应该通过主页索引操作中的主页控制器将用户带到主页。当用户点击联系时,它应该让他联系家庭控制器内部的操作。其他链接也是如此。

我正在做的是在这里

%a{:href => 'home'} Home
%a{:href => 'home/contact'} Contact

所以当我点击联系它给我路由错误

No route matches [GET] "/home/contact"

我怎么解决这个问题?

4

2 回答 2

3

我了解您是 Rails 新手。看起来您还没有阅读有关路由如何与 rails 一起使用的详细信息。

我建议您先熟悉 Rails 指南:从外到内路由。该指南描述了一些简单的快捷方式,您可以使用这些快捷方式来更轻松地设置路线。

例如,完成您想要做的事情的一种方法是使用以下内容:

在您的/config/routes.rb文件中,为您想要的链接输入如下条目:

  root :to => "home#home"
  get "home/index", :to => "home#index", :as => 'home_index'
  get "home/about", :to => "home#about", :as => 'about'
  get "home/contact", :to => "home#contact", :as => 'contact'

这些将创建您可以在视图中使用的快捷方式,例如root_path, home_index_path, about_path,等。contact_path

然后在您看来,您将使用:

 %a{:href => home_index_path } Home
 %a{:href => contact_path } Contact

这只是您如何使用路径的开始。您还想学习如何使用 rails 'restful routing' 以及如何放入resources您的路由文件,但这可能超出了您现在所需要的。

于 2012-07-02T13:19:54.497 回答
1

您需要在 config/routes.rb 中为此 URL 添加一个路由。像这样的东西应该工作:

match 'home/contact' => 'home#contact`

我完全不推荐这种方法,因为它不是 RESTful 并且会导致很多混乱的路由和控制器。查看Rails 路由指南,了解有关如何在 Rails 中更好地设计路由的更多信息。

于 2012-07-02T12:20:44.693 回答