发布到users_controller操作的Rails问题

时间:2016-08-04 20:25:38

标签: ruby-on-rails

我在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"

如果我将路由更改为补丁...而不是发布我得到模板丢失错误。 我觉得我让这个过于复杂,但我的大脑整天都在编码。

我只是希望用户点击一个按钮(必须在另一个表单中),删除用户的图片并重定向到他们的个人资料页面。

2 个答案:

答案 0 :(得分:3)

form_for默认发送PATCH,但您的路由等待POST。您可以将method: 'post'添加到form_for或将路线更改为PATCH

答案 1 :(得分:0)

我想你错过了

method: :delete

在电话中。