Diese App hat die folgenden Modelle:Rails bilden - mehrere verschachtelte Routen nicht definierte Methode '_path'
- Farm (has_many: Kulturen)
- Crop (belongs_to: Bauernhof, has_many: Ausgaben)
- Ausgabe (belongs_to: crop)
Hier sind die Routen:
resources :farms do
resources :crops do
resources :issues
end
end
Ich möchte, dass ein Benutzer in der Farm # show-Seite ein neues "Problem" erstellen kann, das alle Feldfrüchte der Farm auflistet. Hier ist die Form, die den Fehler auf der Farm # show Seite verursacht:
nicht definierte Methode `crop_issues_path‘ für # < #: 0x007fa814a3cc30>
#from the show action on the controller:
#@farm = Farm.find(params[:id])
#@crops = @farm.crops
<% @crops.each do |crop| %>
<%= crop.id %>
<%= form_for([crop, crop.issues.build]) do |f| %>
<%= f.select(:issue_type, options_for_select([['mold'], ['pests'], ['dehydration'], ['other']])) %>
<%= f.text_area :notes %><br>
<%= f.submit "New Issue", :class => "button" %>
<% end %>
<% end %>
Aktionen zu Themen Controller erstellen My:
def create
@crop = Crop.find(params[:crop_id])
@issues = @crop.issues.create(params[:issue].permit(:issue_type, :notes, :crop_id))
redirect_to :back
end
Ich habe fast identischen Code verwendet, wenn die Ernten und Probleme nicht unter Farmen geschachtelt wurden, und es funktioniert. Ich glaube, das Problem liegt an der Verschachtelung, kann aber keine Lösung finden.
die "@farm" in der form_for Zugabe schien zu sein, was das Problem behoben haben! nicht vertraut mit dem "@ farm.try (: crops)" und wie es sich von "@ farm.crops" unterscheidet - was ist der Unterschied? – user1510700
Ah, sorry, das war mein Faulenzen - ich wollte keine Ernten in meine db hinzufügen, um das Szenario zu testen, also fügte ich '.try()' hinzu, damit es nicht mit Nullwert für '@ crops' explodierte – Andrew