我是ruby on rails的新手。我在路线上有问题。我有一个导航菜单。我有一个控制器回家。在家庭控制器内我有几个动作/方法。因此,当用户点击主页时,它应该通过转到家庭索引操作中的家庭控制器将用户带到主页。当用户点击联系人时,应该让他联系家庭控制器内部的操作。其他链接也一样。
我在做什么就在这里
%a{:href => 'home'} Home
%a{:href => 'home/contact'} Contact
因此,当我点击联系时,它会给我发送路由错误
No route matches [GET] "/home/contact"
我该如何解决这个问题?
答案 0 :(得分:3)
我知道你是铁杆新手。看起来您还没有阅读路由如何使用rails的详细信息。
我建议您首先熟悉Rails指南:Routing from the Outside In.该指南介绍了一些简单的快捷方式,您可以使用它们来简化设置路线。
例如,完成您要做的事情的一种方法是使用以下内容:
在您的/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
放入路由文件中,但这可能超出了您现在所需的范围。
答案 1 :(得分:1)
您需要在config / routes.rb中为此URL添加路由。这样的事情应该有效:
match 'home/contact' => 'home#contact`
我根本不推荐这种方法,因为它不是RESTful并且会导致许多混乱的路由和控制器。查看Rails guide on routing以获取有关如何在Rails中更好地设计路由的更多信息。