2016-08-04 26 views
1

users_controllerにユーザーの画像を削除するアクションがあります。Railsの問題がusers_controllerに投稿されました。

post 'users/:id/use_fb_photo', to: 'users#use_fb_photo', as: :use_fb_photo 

routes.rbを

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 

私は、フォームを使用して、このアクションにユーザ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] "https://stackoverflow.com/users/17/use_fb_photo"を取得しています。

私がパッチのルートを変更すると、ポストの代わりにテンプレートが失われてしまいます。 私はこれをあまりにも複雑にしているように感じますが、私の脳は一日中コーディングされて揚げられています。

ユーザーの写真を削除してプロフィールページにリダイレクトするボタン(別のフォーム内にある)をクリックするだけでいいです。

答えて

3

form_forデフォルトではPATCHを送信しますが、経路はPOSTです。 form_formethod: 'post'を追加するか、ルートをPATCH

+0

です。いいえ、経路に合致しないエラーに役立ちましたが、今はテンプレートを要求しています – user4584963

+0

私のリダイレクトがifステートメント内にあったからだと思います – user4584963

+0

あなたの行動では、あなたのコードは健康ではありません。 if-elseは一緒でなければなりません。 –

0

私はあなたが呼び出しで

method: :delete 

を逃すと思います。

+0

に変更しても問題ありません。私はレコードを削除していない、私はただそれに変更を加えています。私はコントローラーのアクションにparams(ユーザーID)を掲示しています。 – user4584963

+0

画像はユーザーのパラメータですか、それともユーザーは画像がありますか?私はあまりにも重すぎて、多分私はちょうどセラピーの質問をします。 – Boomerange

+0

それはユーザのパラメータ – user4584963

関連する問題