创建新的嵌套资源

时间:2010-04-12 10:40:42

标签: ruby-on-rails ruby

我正在开发一个基本的花园采伐应用程序,其中包括花园,植物和种植的植物。每个用户都有一个或多个花园,植物是主要定义,种植植物可以被视为特定用户花园中植物的实例。

在我的routes.rb文件中,我有以下内容:

map.resources :gardens do |gardens|
  gardens.resources :planted_plants, :has_many => :plant_log_entries, :collection => { :filter => :post, :choose_garden => :post}
  gardens.resources :garden_log_entries 
end 

map.resources :plants

在检索用户花园中的plantted_plants列表时,这对我有意义,但我想从工厂索引创建一个plantted_plant记录。问题是,用户可以拥有多个花园。如何为plantted_plant创建一个新表单,允许用户指定应该使用哪个花园?

当前路线需要一个garden_id - 这对于检索是有意义的,但我想将其作为创建参数提供。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我会添加另一个(非嵌套)路由,以允许访问PlantedPlantsController#create操作,而无需在URL中指定garden_id:

map.resources :planted_plants, :only => :create

这样您就可以将表单发布到/ planted_plants了。至于表单本身,你可能需要这样的东西:

<% form_for @planted_plant do |p| %>
  <%=p.label "garden_id", "Garden" %>
  <%=p.collection_select :garden_id, current_user.gardens, :id, :name %>
  ... other fields ...
<% end %>