如何告诉锚标签在rails中的控制器中执行此操作

时间:2012-07-02 12:14:10

标签: html ruby-on-rails ruby

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

我在做什么就在这里

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

因此,当我点击联系时,它会给我发送路由错误

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

我该如何解决这个问题?

2 个答案:

答案 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_pathhome_index_pathabout_pathcontact_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中更好地设计路由的更多信息。