2009-11-02 126 views
1

我严重不能理解为什么这是如此之难......我有一些与其他MVC框架的经验,但总是听到轨道是最容易编码....现在我甚至不能到我的控制器方法,如果我想。帮助与轨道路线

我用支架来创造“学生”自动为我创建的控制器,模型和视图基本CRUD ..但现在我只是想一个方法的“HelloWorld”添加到我的控制器,当我去

http://localhost:3000/students/helloworld 

我得到一个

未能找到ID =的HelloWorld

错误的学生。

我错过了什么?我知道它与路线和REST有关,但我仍然无法弄清楚,那么我该如何使用我自己的方法...我必须编辑我的路线.rb文件每次我创建一个新的方法?..请帮助

回答

4

Rails中的模型路径分为2组。对单个对象起作用的人(认为编辑,更新,删除)以及没有单个对象进行操作的人(新,索引)。如果你想创建自己的方法,不需要一个对象ID,你需要在你的路径文件中为该方法添加一个路由配置。这些方法是成员或收集方法。成员方法URL看起来像/ model/id/method_name。收集方法看起来像你想要的(/ model/method_name)。这里有一个例子让你的学生模型(routes.rb中)

map.resources :students, :member => {:some_member_function_example => :get }, 
          :collection => { :helloworld => :get } 

注:从配置成员=> ...只有具备收集,如果您有任何成员方法来定义:您可以直接删除。

+0

OK,所以我必须要作为编辑在整个开发我的routes.rb ...我讨厌...我习惯于编辑路由,如果你想要一些奇特的东西(在codeigniter中)...默认是始终控制器/方法/参数1 /参数2 /参数3 /参数4等 我还有一个问题..我想改变脚手架创建的方法的名称..因为我的应用程序是西班牙语。 所以为'新'我想'nueva',为'创造'我想'crear'..... – ignaciofuentes 2009-11-02 21:20:06

+0

我会看国际化轨道维基的文章,可以帮助你。 http://rails-i18n.org/wiki – scottd 2009-11-02 21:38:18

0

链接/students/foo将不会调用students_controllerfoo方法。这是因为Rails中的REST映射包含GET/:controller/:id路由。你的链接匹配这种模式。

为了重写路径(不带参数的方法,像你这样)使用下面的代码片段:

map.resources :students, :collection => {:method_name => :get}