Carrierwave 上传器:如何添加 link 以删除上传的文件
Carrierwave uploader: How to add a link to remove an uploaded file
我有一个上传器,用于三种不同类型用户的个人资料上传他们的头像或徽标。我在这里使用载波和雾,并在生产中使用 S3 存储桶。这行得通。现在我想包括一个 link 以删除 avatar/logo 如果该用户想要的话。所以它不应该删除用户的整个记录,只删除一个变量(avatar/logo)。我正在使用下面的代码。
不幸的是,它不起作用。 我在这里做错了什么? 错误:Couldn't find User without an ID
指的是控制器线 User.friendly.find(params[:id]).avatar.destroy
。 (friendly
来自 friendly_id gem。)
用户控制器:
def destroy_avatar
User.friendly.find(params[:id]).avatar.destroy
flash[:success] = "Avatar deleted"
redirect_to users_url
end
路线:
delete 'avatar' => 'users#destroy_avatar'
Link 在视图中:
<% if @users.avatar? %>
<%= link_to "Remove avatar", avatar_path(@user), method: :delete %>
<% end %>
尽管错误消息 @user
确实有一个值,因为它在整个视图页面上都用于其他正常运行的变量。
服务器日志说请求:
Started DELETE "/avatar.fakename1"
Processing by UsersController#destroy_avatar as
Parameters: {"authenticity_token"=>"ZYVI***AZy34jYzQ=="}
Completed 404 Not Found in 2ms (ActiveRecord: 0.0ms)
ActiveRecord::RecordNotFound (Couldn't find User without an ID):
app/controllers/users_controller.rb:68:in `destroy_avatar'
请求参数如下:
{"_method"=>"delete",
"authenticity_token"=>"ZYVIEy1***DYGICxgi4jYzQ==",
"format"=>"fakename1"}
当您使用带参数的 rails 路径助手时,路由需要反映该参数。
基本上你需要在你的路线中做 delete 'avatar/:id' => 'users#destroy_avatar', as: avatar
以便你可以将参数传递给路径助手。
我有一个上传器,用于三种不同类型用户的个人资料上传他们的头像或徽标。我在这里使用载波和雾,并在生产中使用 S3 存储桶。这行得通。现在我想包括一个 link 以删除 avatar/logo 如果该用户想要的话。所以它不应该删除用户的整个记录,只删除一个变量(avatar/logo)。我正在使用下面的代码。
不幸的是,它不起作用。 我在这里做错了什么? 错误:Couldn't find User without an ID
指的是控制器线 User.friendly.find(params[:id]).avatar.destroy
。 (friendly
来自 friendly_id gem。)
用户控制器:
def destroy_avatar
User.friendly.find(params[:id]).avatar.destroy
flash[:success] = "Avatar deleted"
redirect_to users_url
end
路线:
delete 'avatar' => 'users#destroy_avatar'
Link 在视图中:
<% if @users.avatar? %>
<%= link_to "Remove avatar", avatar_path(@user), method: :delete %>
<% end %>
尽管错误消息 @user
确实有一个值,因为它在整个视图页面上都用于其他正常运行的变量。
服务器日志说请求:
Started DELETE "/avatar.fakename1"
Processing by UsersController#destroy_avatar as
Parameters: {"authenticity_token"=>"ZYVI***AZy34jYzQ=="}
Completed 404 Not Found in 2ms (ActiveRecord: 0.0ms)
ActiveRecord::RecordNotFound (Couldn't find User without an ID):
app/controllers/users_controller.rb:68:in `destroy_avatar'
请求参数如下:
{"_method"=>"delete",
"authenticity_token"=>"ZYVIEy1***DYGICxgi4jYzQ==",
"format"=>"fakename1"}
当您使用带参数的 rails 路径助手时,路由需要反映该参数。
基本上你需要在你的路线中做 delete 'avatar/:id' => 'users#destroy_avatar', as: avatar
以便你可以将参数传递给路径助手。