我真的不明白为什么这么难......我对其他mvc框架有一些经验,但总是听说rails是最容易编码的....现在我甚至无法使用我的控制器方法如果我想要的话到。
我使用scaffold创建'student',它为我自动创建了基本CRUD的控制器,模型和视图..但是现在我只想向我的控制器添加一个方法“helloworld”,当我去
http://localhost:3000/students/helloworld
我得到了
找不到ID = helloworld
的学生
错误。
我错过了什么?我知道它与路由和REST有关但我仍然无法弄清楚我还应该如何使用我自己的方法......我是否必须编辑我的路线。我每次创建一个新方法的rb文件?请帮忙
答案 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