So ist mein Hintergrund in Java-Web-Services, aber ich versuche, den Umzug in ROR.Rails CRUD Parameter Problem
Ich verwende FlexImage, um das Hochladen von Bildern und die Erstellung von Miniaturansichten zu verarbeiten. Ich folgte dem Führer und CRUD Verhalten funktionierte an einem Punkt gut. Irgendwann wurde jedoch das CRUD-Verhalten für eines meiner Modelle (Images) unterbrochen.
Der Fehlercode, den ich bekomme, lautet wie folgt: ActiveRecord::RecordNotFound in ImagesController#show -- Couldn't find Image with ID=#<Image:0x4e2bd74>.
Mit anderen Worten, wenn ich Rails zu erstellen/update/destroy sagen, verwirrt es das Objekt mit der ID. Dies deutet darauf hin, dass möglicherweise ein Routing-Problem vorliegt. Ich dachte, ein Teil für Bilder könnte das Problem gewesen sein, aber das Zurücksetzen der Änderungen hat es nicht behoben.
Im Folgenden werden die neuen, Show und Aktualisierungsmethoden des Controllers für die Bilder Modell:
# images_controller.rb
# ...
def new
@image = Image.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @image }
end
end
# ...
def show
@image = Image.find(params[:id])
respond_to do |format|
format.jpg # show.jpg.erb
format.html # show.html.erb
format.xml { render :xml => @image }
end
end
# ...
def create
@image = Image.new(params[:image])
if @image.save
redirect_to image_url(@image)
else
flash[:notice] = 'Your image did not pass validation.'
render :action => 'new'
end
end
# ...
Hinweis, die zeigen,() ist, natürlich, eine entsprechende ID zu erwarten. Hier ist die new.html.erb für ein neues Bild hochgeladen werden:
# new.html.erb [upload image]
<h1>New image</h1>
<% form_for @image, :html => { :multipart => true } do |f| %>
<%= f.error_messages %>
<table><tr><td width="50%">
<p>
<%= f.label :filename %><br />
<%= f.text_field :filename %></p>
</td>
<td><p><b>Upload Image</b><br />
<%= f.file_field :image_file %><br />
or URL: <%= f.text_field :image_file_url %>
<%= f.hidden_field :image_file_temp %>
</td>
<td>
<b>Uploaded Image:</b><br />
<%= embedded_image_tag(@image.operate { |img| img.resize 100 }) if @image.has_image? %>
</td>
</tr>
</table>
<p>
<%= f.label :description %><br />
<%= f.text_area :description %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
<%= link_to 'Back', images_path %>
Der relevante Teil der routes.rb sind wie folgt:
# routes.rb [excerpt]
map.resources :images
map.image 'images/:action/:id.:format', :controller => 'images'
Beachten Sie auch, dass ein neues Bild ist tatsächlich hochgeladen erhalten und der Fehler wird auf Redirect zu zeigen (die eine gültige ID in Params [: ID] erwartet und nicht das Objekt, das aus welchem Grund auch immer es übergeben wird.)
Vielen Dank für Ihre Hilfe im Voraus, und lassen Sie sich bitte Ich weiß, ob etwas springt ut bei dir.
Da der Fehler in der "show" -Methode auftritt, möchten Sie das vielleicht auch posten? – molf
Posted; Beachten Sie, dass das Problem auch bei update angezeigt wird und auch zerstört wird. –
Wenn das hilft, macht die destroy() Methode auch, was es tun soll, wenn ich '/ destroy/id' manuell in die URL eintrage. –