Ruby on rails 3 是否修改路径的URL帮助器?

Ruby on rails 3 是否修改路径的URL帮助器?,ruby-on-rails-3,routing,Ruby On Rails 3,Routing,我有下面一段代码,我正试图将其融入一些生成的框架中 = form_for(@event, :url => group_event_path(@event.group_id, @event) ) do |f| 如您所见,我定义了一个嵌套的资源路由,如下所示 resources :groups do resources :events end 现在回到上一行的表格。默认的Rails脚手架使用与上面类似的代码生成_表单,该表单在new和edit中使用。这给我带来的问题是,form_for

我有下面一段代码,我正试图将其融入一些生成的框架中

= form_for(@event, :url => group_event_path(@event.group_id, @event) ) do |f|
如您所见,我定义了一个嵌套的资源路由,如下所示

resources :groups do
  resources :events
end
现在回到上一行的表格。默认的Rails脚手架使用与上面类似的代码生成_表单,该表单在new和edit中使用。这给我带来的问题是,form_for必须提交到这两条路径

创建:组事件_path@event.group_id 更新:团体活动_path@event.group_id,@事件
我有没有办法通过修改组事件路径帮助程序的工作方式来简化这一点?

如果您使用多态形式作为语法,这将修复它:

= form_for([@group, @event]) do |f|
现在,如果@event对象在数据库中被持久化,那么它将使用更新路由,如果不是,那么它将使用创建路由

您可以对调用的正常形式_执行相同的操作:


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

第一种方法出现在我身上,但仅为这一行进行第二次数据库查找似乎有些过分。我想这是过早的优化。理想情况下,我希望通过查看@event.group\u id映射第二种方法来构建路径,当它为nil时抛出异常
 = form_for(@event) do |f|