陈述
想象一下,我们有一个库存应用程序,它有一个Movement
模型,它代表任何动作,如产品购买或产品销售。所以我们有默认的 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"}
如果你可以看到purchase
's 和 's 是同一个型号movement
,实际上是由 处理的MovementsController
,但是有不同的流程和处理,这个由create_purchase
而不是指定create
。
问题
purchase
我应该如何为's添加宁静的路线?照顾指定的 HTTP 方法,如GET
,POST
,PUT
,DELETE
等。我应该如何写
form_for
标签?使用movement
模型我们可以写:<%= form_for(@movement) do |f| %>
但是如何为或方法调用purchase
路径?create
update
purchase
我应该如何为's指定验证规则?我已经在模型上指定了一些规则,但是在提交表单时Movement
它们不适用。purchase