我在users_controller中有一个删除用户图片的操作。
def use_fb_photo
@user = User.find(params[:id])
if @user.picture? and @user.uid
@user.remove_picture!
if @user.save
redirect_to :back
end
end
end
的routes.rb
post 'users/:id/use_fb_photo', to: 'users#use_fb_photo', as: :use_fb_photo
我想我需要使用表单将用户ID发送到此操作。
<%= form_for @user, url: use_fb_photo_path, html: {id: "use-fb-photo-form", class: nil} do |f| %>
<% end %>
我希望用户通过单击已在其他表单中的按钮来触发操作。
<button type="button" class="btn btn-default fb-photo" title="Use facebook photo"><i class="fa fa-facebook-square" aria-hidden="true"></i></button>
和js
$('.fb-photo').on('click', function () {
$('#use-fb-photo-form').submit();
});
我收到错误No route matches [PATCH] "/users/17/use_fb_photo"
。
如果我将路由更改为补丁...而不是发布我得到模板丢失错误。 我觉得我让这个过于复杂,但我的大脑整天都在编码。
我只是希望用户点击一个按钮(必须在另一个表单中),删除用户的图片并重定向到他们的个人资料页面。
答案 0 :(得分:3)
form_for
默认发送PATCH
,但您的路由等待POST
。您可以将method: 'post'
添加到form_for
或将路线更改为PATCH
答案 1 :(得分:0)
我想你错过了
method: :delete
在电话中。