2016-04-24 3 views
0

Im пытается создать приложение Rails, которое управляет температурами для сада. Я правильно настроил свои контроллеры и модели, чтобы иметь ресурсы для Grow - Tray - Plant. Grow имеет много подносов В лотке много растенийВложенные ресурсы в Rails 4

Im способно создавать вложенные лотки в каждом растении. Но я не могу создавать растения в специально отведенном лотке.

github repo

Im получаю следующее сообщение об ошибке: неопределенный метод `лоток» Это для моего завода _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

в соответствии с вашим кодом, вы должны использовать '@ grow.trays ...' вместо '@ grow.tray' – Ilya

+0

Ive пытался что хорошо и я получаю это за ошибки неопределенного метода' растений и если я использовать растение вместо растений, плохо получить ту же ошибку – mGarsteck

ответ

0

Если вы выращиваете has_many лотков, то @grow.tray будет не определено (обратите внимание на единственное число).

Возможно, вам следует назначить соответствующий лоток в контроллере, так что можно ссылаться в представлении соответствующим образом:

@tray = @grow.trays.find(...) 

Я также рекомендую избегать гнездования маршрутов более двух уровней. Формы, подобные этим, сложнее управлять с многократным вложением.

+0

Хорошо, что лучше для этого? – mGarsteck

+0

Кроме того, im все равно получает ту же ошибку. Я добавил ваш код к действию set_tray в plant_controller – mGarsteck

Смежные вопросы