Ruby on rails 3 Rails路由,一种同义路由
声明 假设我们有一个库存应用程序,它是一个Ruby on rails 3 Rails路由,一种同义路由,ruby-on-rails-3,rest,routes,Ruby On Rails 3,Rest,Routes,声明 假设我们有一个库存应用程序,它是一个移动模型,它表示任何移动,如产品购买或产品销售。所以我们有默认的REST路由 movements GET /movements(.:format) {:action=>"index", :controller=>"movements"} POST /movements(.:format) {:action=>"create", :controller=&g
移动
模型,它表示任何移动,如产品购买或产品销售。所以我们有默认的REST路由
movements GET /movements(.:format) {:action=>"index", :controller=>"movements"}
POST /movements(.:format) {:action=>"create", :controller=>"movements"}
new_movement GET /movements/new(.:format) {:action=>"new", :controller=>"movements"}
edit_movement GET /movements/:id/edit(.:format) {:action=>"edit", :controller=>"movements"}
movement GET /movements/:id(.:format) {:action=>"show", :controller=>"movements"}
PUT /movements/:id(.:format) {:action=>"update", :controller=>"movements"}
DELETE /movements/:id(.:format) {:action=>"destroy", :controller=>"movements"}
对于助记建议,我们希望有一些描述性路线,如:
new_purchase /purchase/new(.:format) {:controller=>"movements", :action=>"new_purchase"}
edit_purchase /purchase/:id/edit(.:format) {:controller=>"movements", :action=>"edit_purchase"}
如果您可以看到购买
与移动
是相同的模型,实际上是由移动控制器
处理的,但是有不同的流程和处理方式,这是由创建购买
而不是创建
指定的
问题
购买添加restful路由?注意指定HTTP方法,如GET
、POST
、PUT
、DELETE
等
表单_?使用移动
模型,我们可以编写:
但是如何调用购买
路径来创建或更新
方法
购买指定验证规则?我已经指定了一些关于移动
模型的规则,但它们不适用于提交表单时的购买
您可以在路由文件中使用类似的内容
match '/purchase/new(.:format)' => 'movements#new_purchase' :via => :get
match '/purchase/:id/edit(.:format)' => 'movements#edit_purchase' :via => :post
你也可以提到其他的,比如删除,输入:via
有关更多信息,请查看此
如果要将“创建”更改为“创建”,请转到“运动”控制器并更改定义名称
对于第二个问题,你可以这样做
form_tag(:controller => "controller_name", :action => "action_name", :method => "get")
我不认为您应该寻找一种方法来为一个以两种不同方式处理对象的模型RESTfully构建路由。我觉得你在找两个东西。您可以创建一个
Purchase
模型,该模型从父Movement
模型继承其属性
或者,您可以假设它们是相同的对象,并使用有意义的语义路径以相同的方式处理它们。也就是说,您正在寻找的可能是移动
控制器操作的默认RESTful路由的路径更改。另外,典型的rails约定是使用多个路径路由,这对于索引页和标识数据库中对象表的子集对象具有语义意义,因此我使用purchase
而不是purchase
resources :movements, :path => "/purchases"
将产生
movements GET /purchases(.:format) {:action=>"index", :controller=>"movements"}
POST /purchases(.:format) {:action=>"create", :controller=>"movements"}
new_movement GET /purchases/new(.:format) {:action=>"new", :controller=>"movements"}
edit_movement GET /purchases/:id/edit(.:format) {:action=>"edit", :controller=>"movements"}
movement GET /purchases/:id(.:format) {:action=>"show", :controller=>"movements"}
PUT /purchases/:id(.:format) {:action=>"update", :controller=>"movements"}
DELETE /purchases/:id(.:format) {:action=>"destroy", :controller=>"movements"}
使用此模型,helper方法的
form_仍然可以像平常一样使用。假设正确定义了@movement
,则将正确调用带有采购
根目录的路径。我在帖子中添加了第二个问题。使用:via
选项可用于指定HTTP方法。希望更新后的答案解决第二个问题。先用谷歌搜索你的问题。如果你在谷歌上找不到答案,你可以在这里发布:)