2009-07-21 21 views
0

Railscastsが選択から複数の編集を行う方法に大きなチュートリアルをしました。しかし、私はその上に構築したい。より多くの行動(編集と破壊)をしたいのですが?これはgmailsのメールでさまざまな動作を実行する能力に似ています。ルビー - 複数の編集

私は自分のフォームを作成し、私はアクションのドロップダウンメニューがあります。フォームはコントローラ内のアクションに移動しますが、これは正しいアクションにリダイレクトされるはずです(edit vs destroy)。私はredirect_toでこれを行い、パラメータを渡しますが、正しく動作しません。

def action 
    if params[:perform_action] == 'edit' 
    redirect_to :action => 'edit_multiple', :structure_ids => params[:structure_ids] 
    elsif params[:perform_action] == 'destroy' 
    redirect_to destroy_multiple_structures_path, :structure_ids => params[:structure_ids] 
    end 
end 

これは正しく動作しません。私のedit_multipleは、実際にはshowアクションにリダイレクトされます。私はそれが私のルートとすべてに設定されているにもかかわらず。

パラメータを正しく渡すにはどうすればよいですか?または、それが渡されるメソッドの問題です(もしそうなら、私はそれをどのように変更するのですか?) またはこれを行う適切な方法は何ですか(これではない場合)?

パラメータを渡すのに疲れましたが、うまくいきませんでした。

私はroutes.rbをして、コレクションを使用していますが、私はPOSTを与えることにするredirect_toを変更する方法を見つけ出すことはできません。何か案は?

+0

も、私はedit_multiple_structures_pathを持っているが、私はそれと一緒のparamsを渡す方法を見つけ出すことはできません。 – RyanJM

答えて

1

[OK]をので、私はredirect_toに変更する方法を取得するために、私は正しく渡さのparamsを取得する方法を見つけ出すことができない方法を見つけ出すように見えることはできません。そのため、jQueryを使用してフォーム自体の動作を変更しました。

$("#action").change(function(e){ 
    var changeTo = $(e.target); 
    var value = changeTo.attr("value"); 
    if(value == 'edit'){ 
     $("form").attr("action","/myController/edit_multiple"); 
     $("form").attr("method","POST"); 
    } 
    if(value == 'destroy'){ 
     $("form").attr("action","/myController/destroy_multiple"); 
     $("form").attr("method","DELETE"); 

    } 
}); 

これは最適化されていませんが動作します。 actionはselectタグのidです。希望は他の誰かを助ける。

0

FYI- update_allまたはdelete_allはあなたの友人です、ここにあります。削除、アーカイブなどのため

0

Gmailのような機能はこれだけ必要な機能を持つボタンまたはリンクを作成し、no形式を必要としません。 コンテンツを変更するためのフォームが必要です。

関連する問題