Ich verwende Rails 4.2.3. Ich habe dies in meiner Controller-Datei „./app/controllers/users_controller.rb“ ...Fehlermeldung "Keine Route stimmt überein" obwohl ich eine Methode in meinem Controller habe
def edit
@user = User.find(session["user_id"])
render 'edit'
end
def update
@user = User.find(session["user_id"])
if @user.update_attributes(user_params)
flash[:success] = "Profile updated"
end
render 'edit'
end
Und ich habe dies in meiner „./app/views/users/edit.html.erb“ Datei
<%= form_for(@user) do |f| %>
…
<%= button_to "Save", { :action => "update" }, :method => :post, :class => 'button' %>
Aber wenn ich meine url „http://localhost:3000/users/edit“ besuchen, bekomme ich diesen Fehler
No route matches {:action=>"update", :controller=>"users"}
Dies ist, was ich in Routen/config.rb haben so bin ich nicht sicher, warum seine auseinander ... fallen
get "users/edit" => "users#edit"
resources :users
Ich habe meinen Button-Code geändert in "<% = button_to" Speichern ", {: action =>" update "},: methode =>: put,: class => 'button'%>" aber wenn ich http besuche : // localhost: 3000/users/edit, bekomme ich immer noch den gleichen Fehler. – Dave
@Dave Aktualisierte Antwort - versuchen Sie, '{: controller =>" Benutzer ",: id => @ user.id}' zu übergeben. Kann leider nicht testen, aber das sollte funktionieren. –
Auch Ihr Code erneut angeschaut - Sie könnten stattdessen 'fmit' verwenden, d. H.' <% = Form_for (@user,: method =>: put) do | f | %> 'und dann' fmit' anstelle von 'button_to'. –