代码之家  ›  专栏  ›  技术社区  ›  Bobby B

创建新的嵌套资源

  •  0
  • Bobby B  · 技术社区  · 16 年前

    在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
    

    在检索用户花园中的已种植植物列表时,这对我来说很有意义,但我希望从植物索引创建已种植植物记录。问题是,一个用户可以有多个花园。如何为种植的植物创建一个新表单,允许用户指定应该使用哪个花园?

    当前路由需要一个garden\u id-这对于检索是有意义的,但是我想提供它作为创建的参数。

    提前感谢您的帮助!

    1 回复  |  直到 16 年前
        1
  •  0
  •   Teoulas    16 年前

    我将添加另一个(非嵌套)路由,以允许访问 PlantedPlantsController#create

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

    这将允许您将您的表格张贴到植物上。至于表单本身,您可能需要这样的内容:

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