Ich habe eine has_one/gehört zu einer Verknüpfung zwischen zwei Modellen -> User und ContactCard. Während ich in der Lage bin, eine Kontaktkarte für einen Benutzer zu erstellen, wird die Erstellungsaktion von ContactCardsController aufgerufen, anstatt sie zu aktualisieren, wenn ich versuche, die Karte zu bearbeiten (das kann ich sagen, weil ich unterschiedliche Erfolgsmeldungen habe). Es ändert sich die Attribute der Kontaktkarte, gut, ich muss sagen. Ich bin meistens froh, dass es funktioniert, aber ich würde eher Lücken in meinem Verständnis von Schienenpfaden und -verknüpfungen schließen. Was vermisse ich? Warum benutzt es nicht die Aktion, die ich erwarte? Auch wenn Sie irgendwelche relevanten Beispiele im Internet oder auf Github kennen, die ich studieren könnte, bin ich ganz Ohr. Vielen Dank!Bearbeiten has_one Objekte mit form_for in Rails
Kontakt-Karten-Controller ...
class ContactCardsController < ApplicationController
def create
current_user.build_contact_card(params[:contact_card])
if current_user.contact_card.save
flash[:success] = "Contact Card created!"
redirect_to '/account'
else
flash[:error] = "Fail!"
redirect_to '/account'
end
end
def update
if current_user.contact_card.update_attributes(params[:contact_card])
flash[:success] = "Profile updated."
redirect_to '/account'
else
flash[:error] = "Fail!"
redirect_to '/account'
end
end
Link-Formular zu bearbeiten ...
<%= link_to "Edit Profile", edit_user_contact_card_path(current_user) %>
Formular bearbeiten ...
<%= form_for [current_user, current_user.build_contact_card], :url => user_contact_card_path(current_user) do |f| %>
<%= f.label :first_name %>
<%= f.text_field :first_name %>
<%= f.label :last_name %>
<%= f.text_field :last_name %>
<%= f.submit "Save Contact Details", :class => "btn btn-large btn-primary" %>
<% end %>
Relevante Routen ...
resources :users do
resource :contact_card
.....
Das User-Modell has_one: contact_card und der ContactCard Modell belongs_to: Benutzer
try edit_user_contact_card_path (current_user.id), nicht sicher, weil ich nicht weiß, welche Authentifizierungsschema Sie verwenden. Schauen Sie sich auch die ContactCard-Tabelle an. Ich wette, Sie haben einen Datensatz für jede Karte, die Sie bearbeitet haben. – RadBrad
Ich habe das versucht und es geht immer noch aus irgendeinem Grund durch den Erstellungs-Pfad. current_user gibt das Benutzerobjekt für den aktuellen Benutzer zurück. –