我正在尝试创建一个管理花园温度的Rails应用程序。我已经适当地设置了我的控制器和模型,以便为Grow - Tray - Plant提供资源。 成长有很多托盘 托盘有很多植物
我能够在每次成长中创建嵌套托盘。但我无法在指定的托盘中制作植物。
我收到以下错误: 未定义的方法`托盘' 这是我的工厂_form
<%= form_for([@grow, @grow.tray.plants.build]) do |f| %>
<div class="field">
<%= f.label :title %><br>
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :description %><br>
<%= f.text_area :description %>
</div>
<div class="field">
<%= f.label :tray_id %><br>
<%= f.text_field :tray_id %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
路线看起来像这样:
resources :grows do
resources :trays do
resources :plants
end
end
用于构建托盘的表单看起来像这样,它可以工作:
<%= form_for([@grow, @grow.trays.build]) do |f| %>
<div class="field">
<%= f.label :title %><br>
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :description %><br>
<%= f.text_area :description %>
</div>
<div class="field">
<%= f.label :grow_id %><br>
<%= f.text_field :grow_id %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
这是否是正确的方法?
答案 0 :(得分:0)
如果成长has_many
个托盘,那么@grow.tray
将是未定义的(请注意单数)。
也许你应该在控制器中分配相关的托盘,因此可以在视图中适当地引用它:
@tray = @grow.trays.find(...)
我还建议避免嵌套路线超过两个级别。像这样的表单往往更难以管理多个嵌套。