2016-11-10 21 views
0

私はコントローラから実行したいメソッドを持っていますが、これはボタンをクリックして行う必要があります。問題は特定の行またはアイテムをクリックしたときですそのアイテムのビューにリダイレクトされます。ここで表示ビューを表示しない呼び出しメソッド - Rails

は、私が作成したルートである: patch '/withdraw/:id', to: 'payments#withdraw', as: :withdraw

これは、のlink_toラインです: <%= link_to 'Withdraw', withdraw_path(pay), method: :post %>

そして、これは実際には既存の属性を更新している方法で、次のとおりです。

def withdraw 
@payment = Payment.find(params[:id]) 
@payment.withdrawn = true 
@payment.amount_interest = @payment.amount * 1.1 
@payment.save 
end 

希望の結果を得るために何を変更する必要がありますか?どんな支援も大歓迎です。

答えて

0

remote: trueをリンクに追加します。

<%= link_to 'Withdraw', withdraw_path(pay), method: :patch, remote: true %> 

とアクションの最後にhead :okを追加: `ActionController :: RoutingError(Noルートマッチ[POST]:私は次のエラーを取得していますよう

def withdraw 
    .. 
    head :ok 
end 
+0

私は、私のルートを編集する必要がありますか'/ withdraw/3 ')' –

+0

返信してくれてありがとうございました。私はwithraw 'link_to'をクリックすると、指定されたレコードを取得しようとしている無期限/無終了ループを取得します:' CACHE(0.0ms)SELECT " "お支払い" "支払"から "ID" = $ 1 LIMIT $ 2 [["" ID "、1]、[" LIMIT "、1]] –

+0

@MorezSAこれはあなたの最初の'コードを撤回する。おそらく '@payment.amount_interest = @ payment.withdraw.amount * 1.1'が必要です。今や無限で無意味なループがあります。 – MikDiet

関連する問題