0

我在这里看到了这个问题的答案,但不幸的是,答案不起作用。仅供参考,这是一个 Rails 2.3.11 应用程序。

我想用这个 link_to 助手针对 RESTful 资源调用 create:

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 }

这是“rake routes”的结果

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

注意没有任何类型的 id!

4

1 回答 1

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是如何定义的。

于 2012-07-26T06:30:20.170 回答