2016-04-24 10 views
0

庭の温度を管理するRailsアプリケーションを作成しようとしています。私はGrow-Tray - Plantのためのリソースを持つためにコントローラとモデルを適切にセットアップしました。 成長には多くのトレイがあります トレイには多くの植物がありますRailsのネストされたリソース4

それぞれ成長するネストされたトレイを作成することができます。しかし、私は指定されたトレイに植物を作れません。

github repo

Imは、次のエラーを取得:

resources :grows do 
    resources :trays do 
     resources :plants 
    end 
end 

:これは私の植物_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 %> 

ある 未定義のメソッド `トレイ」 をルートのような見トレイを構築するためのフォームはこのように見え、動作します:

<%= 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

アイブ氏も同様ということを試してみましたが、私はエラー 未定義のメソッド'植物の 、私の場合のためにこれを取得します植物の代わりにプラントを使用すると、同じエラーが発生する – mGarsteck

答えて

0

Grow has_manyトレイの場合、@grow.trayは不定(単数に注意してください)です。

それが適切にビューで参照することができますので、おそらくあなたは、コントローラの該当するトレイを割り当てる必要があります。

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

を私はまた、ネストのルートにつ以上のレベルを避けることをお勧めしたいです。このようなフォームは、複数のネストを使用して管理することがより困難になる傾向があります。

+0

これを達成するためのより良い方法は何ですか? – mGarsteck

+0

また、私はまだ同じエラーが発生しています。私は、あなたのコードをplants_controllerのset_trayアクションに追加しました – mGarsteck

関連する問題