J'ai un parent "Comptes" qui a beaucoup de "Priorités".Mettre à jour l'association d'enfants dans Ruby on Rails Formulaire
Je peux très facilement créer de nouvelles priorités pour ces comptes, mais je ne peux pas les éditer/les mettre à jour une fois que je les ai créés.
modèle de compte (parent):
class Account < ApplicationRecord
has_many :priorities
accepts_nested_attributes_for :priorities
end
modèle priorités (enfant):
class Priority < ApplicationRecord
belongs_to :account
end
Routes:
resources :accounts do
resources :priorities
end
priorities_controller.rb (juste le modifier, mettre à jour et params)
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
et enfin, mon edit.html.erb (si cela finit par être des comptes/#/priorités/#/modifier)
<%= 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 %>
Tout va vraiment bien jusqu'à ce point. Le formulaire obtient parfaitement les données de formulaire pour la priorité correcte, et il échoue même si vous essayez d'entrer un ID de priorité qui n'est pas associé à cet ID de compte. Cependant, lorsque je clique sur « Mise à jour Priorité » Je reçois:
« L'action « mise à jour » n'a pas pu être trouvée pour AccountsController »
Maintenant, je peux suivre l'erreur et créer une mise à jour pour ce contrôleur, mais Je ne pense pas qu'il devrait même essayer de déclencher le AccountsController, il semble qu'il devrait essayer d'utiliser le contrôleur de priorités.
En effet, si je vérifie la console, la demande semble aller ici: URL de demande: http://127.0.0.1:3000/accounts/2
Je suis désolé, je suis recherche d'au moins 10 heures pour la réponse à cette question et peut ne le trouve pas. Merci de votre aide.
Copie possible de [formulaire \ _pour des ressources imbriquées] (https://stackoverflow.com/questions/2034700/form-for-with-nested-resources) – jvillian