修改路径的URL帮助程序?

时间:2011-10-19 23:21:52

标签: ruby-on-rails-3 routing

我有以下代码,我正在尝试适应一些生成的脚手架

= form_for(@event, :url => group_event_path(@event.group_id, @event) ) do |f|

如您所见,我已经定义了一个看起来像这样的嵌套资源路径

resources :groups do
  resources :events
end

现在回到上面的form_for行。默认的Rails脚手架使用类似于上面的代码来生成_form,它在#new和#edit中使用。这给我带来的问题是form_for必须提交这两条路径

  • CREATE:group_events_path(@ event.group_id)
  • 更新:group_event_path(@ event.group_id,@ event)

有没有办法让我通过修改group_event(s)_path帮助程序的工作方式来简化它?

1 个答案:

答案 0 :(得分:0)

如果您使用多态form_for语法,这将解决它:

= form_for([@group, @event]) do |f|

现在,如果@event对象在数据库中保留,那么它将使用update路由,如果不是,那么它将使用create路由。

您可以使用正常的form_for电话执行相同的操作:

 = form_for(@event) do |f|

除了将URL自定义为与Rails推断的不同之外,绝对没有理由指定:url选项。