帮助rails路线

时间:2009-11-02 20:58:03

标签: ruby-on-rails routing

我真的不明白为什么这么难......我对其他mvc框架有一些经验,但总是听说rails是最容易编码的....现在我甚至无法使用我的控制器方法如果我想要的话到。

我使用scaffold创建'student',它为我自动创建了基本CRUD的控制器,模型和视图..但是现在我只想向我的控制器添加一个方法“helloworld”,当我去

http://localhost:3000/students/helloworld

我得到了

  

找不到ID = helloworld

的学生

错误。

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

2 个答案:

答案 0 :(得分: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 }

注意:您只需删除:member => ...来自配置,如果没有要定义的成员方法,则只有集合。

答案 1 :(得分:0)

链接/students/foo不会调用foo的{​​{1}}方法。这是因为Rails中的REST映射包含GET的/ students_controller路由。并且您的链接符合此模式。

要覆盖该路径(对于没有参数的方法,如您的路径),请使用以下代码段:

:controller/:id