2012-07-25 69 views
0

我看到这个问题在这里回答,但不幸的是答案不起作用。仅供参考,这是一个Rails 2.3.11应用程序。如何从link_to助手调用“创建”动作?

我想打电话与对一个RESTful资源的link_to这帮助创建:

link_to("Add", part_types_path(myid), :method => :post) 

现在非常,非常奇怪的是,那我传递到URL助手的ID被解释为“格式”由Rails应用程序!所以链接出来是:

/part_types.12345 

其中“12345”是id。疯!

我错过了非常基本的东西,但我从来没有见过Rails尝试调用对象ID格式。

这里是路由条目:

map.resources :part_types, :collection => { :part_list => :get } 

,这里是结果从 “回扣路线”

POST /part_types(.:format) {:controller=>"part_types", :action=>"create"} 

公告不存在任何种类的ID的!

+0

请显示您的config/routes.rb文件或输入rake路由并向我们显示输出。谢谢。 – 2012-07-25 20:39:28

回答

1

与名称part_types路线是指index行动,如果该方法是GET并向create动作,如果该方法是POST。这些操作都没有参数化路径(与show看起来应该如/part_types/:id相反)。 create应该创建一个新记录并返回它的id - 通常不会在请求中传递它们,因为服务器上的唯一id生成更容易。

您的第一个参数将被解释为格式,因为该路线不带任何参数。与此相比,以下内容:

  • part_type_path(1)应该返回/part_types/1
  • part_type_path(1, :json)应该返回/part/types/1.json

检查actionpack/lib/action_dispatch/routing/mapper.rb看看resources是如何定义的。

相关问题