1

ビューテーブルにbutton_toヘルパーメソッドがありますが、必要な方法で動作させることができません。これを使用して、テーブルの作成とは異なるモデルのレコードを削除しています。:idはありませんが、適切なレコードを見つけることができる他のパラメーターがあります。ここでの他の質問に基づいて、私は次の構文が正しいはずだと思います。

<%= button_to 'Remove',mailing_list_edit_path(:arg1 => "value1", :arg2 => "value2"),:method => :delete,:confirm => "are you sure?" %>

しかし、ボタンをクリックするとこのエラーが発生します。

Routing Error
No route matches [DELETE] "/assets"
Try running rake routes for more information on available routes. 

これが私のroutes.rbのエントリです

resources :mailing_list_edits, only: [:create, :destroy]

そして私のコントローラーのアクション

def destroy
MailingListEdit.where(:att1 => params[:arg1], :att2 => params[:arg2]).delete_all
respond_to do |format|
format.html { redirect_to controller1_index_path(session[:remember_token]) }
end
end

私は何が間違っているのですか?

4

2 に答える 2

3

破壊するオブジェクトをリンクに与えていないと思います。実際、リソースによって作成された destroy メソッドはメンバー ルートです。破棄するオブジェクトが必要です。

例えば: <%= button_to 'Remove',mailing_list_edit_path(@object_to_destroy, :arg1 => "value1", :arg2 => "value2"),:method => :delete,:confirm => "are you sure?" %>

于 2012-04-27T14:06:39.733 に答える
1

他の誰かを助ける場合に備えて、回避策を見つけました。ここにあります。

パス ヘルパーは :id がないと機能しないため、ダミーの :id を含め、検索と破棄に必要な 2 つの属性を渡すことができるようになりました。したがって、私の button_to は次のようになります。

<%= button_to 'Remove',mailing_list_edit_path(:id => "foobar", :arg1 => "value1", :arg2 => "value2"),:method => :delete,:confirm => "are you sure?" %>

ハックのようなものですが、うまくいきます!

于 2012-04-30T17:57:48.450 に答える