2011-01-15 6 views
0

https://gist.github.com/781133Ruby on Rails bilden, anstatt nur/Objekt

ich eine Form haben, um /object.1-Aktion, die es zu einreichen sollte "/ site /: id/Detail", aber wenn ich mir anschaue, die Formularaktion sagt "/site/:id/detail.1" und nachdem ich die Update-Aktion getroffen habe (ich benutze nicht aus dem Web erstellen, so dass ich das nicht testen kann) landet bei "/ site /: id/Detail.1 "aber ich brauche es bei"/site /: id/detail ".

Ich habe das Formular, die Update-Aktion und die Routen für meine Anwendung aufgenommen. Jede Hilfe würde sehr geschätzt werden!

Antwort

1

Das Problem ist, wie Rails Weghelfer behandelt. Wenn Sie eine einzelne resource-Route erstellen, erstellt es immer noch den resource_path -Helfer, erwartet jedoch kein Objektargument, da es sich um eine einzelne Ressource und keine Sammlung handelt. Wenn Sie das @path-Objekt übergeben, wird seine ID als Format des generierten Pfads verwendet.

Anstelle von redirect_to resource_path(@resource)redirect_to resource_path verwenden, wobei "single_resource" der Name des Modells ist, auf dem diese Struktur basiert.

Also in Ihrem Code, würden Sie diesen Abschnitt, um die folgenden wechseln möchten ...

if @detail.update_attributes(params[:detail]) 
    format.html { redirect_to(site_detail_path, :notice => 'Details Updated!') } 
    format.js { render :layout => false} 
else   
    format.html { redirect_to(site_detail_path, :notice => 'Details Not Updated.') } 
    format.xml { head :ok } 
end 
+0

Ich habe versucht, diese chamge keine Wirkung zu machen. Ich bin nicht sicher, dass das Problem im Controller ist, da die Aktion auf dem Formular falsch ist, bevor der Controllerb jemals beteiligt ist – biagidp

+0

Ahh ja, Sie müssen auch Ihr Formular ändern: 'form_for @ resource,: url => resource_path do | f | ' – coreyward

+0

Das hat funktioniert, danke! – biagidp