Ruby on rails Rails:ActiveRecord::RecordNotFound找不到没有ID的照片
我有两个模型,服务和照片。在服务模式下属于:用户,有多张:照片和多张附加的:图像 照片下的模型属于:服务 在照片查看器下,我试图显示与每个服务相关的图像 尝试删除图像时,我收到一个ID错误的“找不到图像” 查看器如下所示:Ruby on rails Rails:ActiveRecord::RecordNotFound找不到没有ID的照片,ruby-on-rails,paperclip,rails-activestorage,Ruby On Rails,Paperclip,Rails Activestorage,我有两个模型,服务和照片。在服务模式下属于:用户,有多张:照片和多张附加的:图像 照片下的模型属于:服务 在照片查看器下,我试图显示与每个服务相关的图像 尝试删除图像时,我收到一个ID错误的“找不到图像” 查看器如下所示: <% if @service.images.attached? %> <br/><br/> <div class="row"> <% @service.images.each do |image| %>
<% if @service.images.attached? %>
<br/><br/>
<div class="row">
<% @service.images.each do |image| %>
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading preview">
<%= image_tag image %>
</div>
<div class="panel-body">
<span class="pull-right">
<%= link_to service_photo_path(@photos, image), remote: true, method: 'delete', data: {confirm: "Are you sure?"} do %>
<i class="fa fa-trash-o" aria-hidden="true"></i>
<% end %>
</span>
</div>
</div>
</div>
<% end %>
</div>
<% end %>
class PhotosController < ApplicationController
def create
@service = Service.find(params[:service_id])
if params[:images]
params[:images].each do |img|
@service.photos.create(image: img)
end
@photos = @service.photos
redirect_back(fallback_location: request.referer, notice: "Saved...")
end
end
def destroy
@photo = Photo.find(params[:_id])
service = @photo.service
@photo.destroy
@photos = Photo.where(service_id: service_id)
respond_to :js
end
end
替换
@photo = Photo.find(params[:_id])
与:
我想你有打字错误!id不是\u id
此外,在您看来,请替换:
service_photo_path(@photos, image)
与:
您可以运行rake路由并向我们显示这些模型的相关路由吗?service_photos POST/services/:service_id/photos.:formatphotoscoreate service_photo DELETE/services/:service_id/photos/:id.:format photodestruction如我所料,您应该使用params[:id]而不是params[:\u id]请参阅下面答案部分中的我的答案,如果它确实对您有帮助,请将其标记为正确:现在错误更改为ActiveRecord::RecordNotFound找不到具有“id”的照片=10@klasarn,我已经更新了答案,并做了额外的更改:请关注并反馈!你需要弄清楚怎么拍这张照片。。你正在混合使用照片和图像。当我使用照片而不是图像时,我得到错误未定义的局部变量或方法。我知道我在混合使用照片和图像,因为我必须从回形针切换到activestorage…路由和控制器显示您正在处理照片。然后你传递一个图像!!在您看来,您需要使用@service.photos而不是@service.images。您需要决定什么是照片、什么是图像以及如何使用它们!!当图像需要照片时,无法将其传递给服务\u photo\u路径。
@photo = Photo.find(params[:id])
service_photo_path(@photos, image)
service_photo_path(@service, photo)