Ich habe ein Elternteil "Konten", die viele "Prioritäten" hat.Update Child Association in Ruby on Rails Formular
Ich kann sehr leicht neue Prioritäten für diese Konten erstellen, aber ich kann sie nicht bearbeiten/aktualisieren, sobald ich sie erstellt habe.
Konto-Modell (Eltern):
class Account < ApplicationRecord
has_many :priorities
accepts_nested_attributes_for :priorities
end
Prioritäten Modell (Kind):
class Priority < ApplicationRecord
belongs_to :account
end
Routen:
resources :accounts do
resources :priorities
end
priorities_controller.rb (nur das bearbeiten, aktualisieren und Parameter)
class PrioritiesController < ApplicationController
def edit
@account = Account.find(params[:account_id])
@priority = @account.priorities.find(params[:id])
end
def update
@account = Account.find(params[:account_id])
@priority = @account.priorities.update(priority_params)
end
private
def priority_params
params.require(:priority).permit(:name, :narrative, :kpis)
end
end
und schließlich meine edit.html.erb (so diese endet Konten/#/Prioritäten/#/bearbeiten ist)
<%= form_for(@account) do |a| %>
<%= a.fields_for :priorities, @priority do |p| %>
<p>
<%= p.label :name %><br>
<%= p.text_field :name %>
</p>
<p>
<%= p.label :narrative %><br>
<%= p.text_area :narrative %>
</p>
<p>
<%= p.label :kpis, "KPIs" %><br>
<%= p.text_field :kpis %>
</p>
<p>
<%= p.submit %>
</p>
<% end %>
<% end %>
Alles geht sehr gut bis zu diesem Punkt. Das Formular ruft die Formulardaten für die richtige Priorität perfekt ab und schlägt sogar fehl, wenn Sie versuchen, eine Prioritäts-ID einzugeben, die dieser Konto-ID nicht zugeordnet ist. Allerdings, wenn ich auf „Update-Priority“ erhalte ich:
Now „Die Aktion‚update‘nicht für AccountsController gefunden werden kann“, so kann ich nur den Fehlern folgen und ein Update für diesen Controller erstellen, aber Ich denke nicht, dass es sogar versuchen sollte, den AccountsController auszulösen, es scheint, dass es versuchen sollte, den Prioritätscontroller zu verwenden.
der Tat, wenn ich die Konsole überprüfen, scheint die Anfrage hier gehen zu: Anforderungs-URL: http://127.0.0.1:3000/accounts/2
Es tut mir leid, ich habe die Antwort auf diese Frage für mindestens 10 Stunden suchen und können Ich finde es nicht. Danke für Ihre Hilfe.
Mögliches Duplikat von [form \ _for mit verschachtelten Ressourcen] (https://stackoverflow.com/questions/2034700/form-for-with-nested-resources) – jvillian