2011-12-14 12 views
0

というメソッドに関係なくコントローラに呼び出しを行うときに実行する定義を書く方法は、呼び出されたメソッドに関係なくデータベースに対して更新を行いたい。 "update"を共通の定義とみなしてください。Ruby on rails - Rubyonrailsアプリケーションで

メソッドのインポートを呼び出す場合、コントローラはインポートメソッドの定義でコードを実行し、共通の更新メソッドも実行する必要があります。

class Admin::ReportsController < ApplicationController 


def update 

    respond_to do |format| 
     format.html #index.html.erb 
    end 
    end 

def index 

    respond_to do |format| 
     format.html #index.html.erb 
    end 
    end 



def import 

    respond_to do |format| 
     format.html #index.html.erb 
    end 
    end 
+1

あなたが何を求めているのかわかりません。あなたは例を明確にすることができますか? –

+0

サンプルコードが間違っている可能性があります。もし 'update'と別のメソッドの両方を呼び出すと' DoubleRenderException'が出ますが、JRLが書いたように、フィルタはおそらくあなたが望むものです。 – riffraff

答えて

1

これはもう少し明確です。

答えはあなたが複数のアクションなどで使用することができるコントローラにメソッドを追加できることです。

class Admin::ReportsController < ApplicationController 

    def update 
    @objects = get_objects 

    respond_to do |format| 
     format.html #index.html.erb 
    end 
    end 

    def import 
    @objects = get_objects 

    respond_to do |format| 
     format.html #index.html.erb 
    end 
    end 

    # using protected means that the methods below here won't be recognised as new actions 
protected 
def get_objects 
    unless params[:my_objects].present? 
     flash[:notice] = "no objects!" 
     return redirect_to(:action => :index) 
    end 
    objects = [] 
    params[:objects].each do |obj| 
     objects << object.new(obj) 
    end 
    objects 

end 
1

は、コントローラにbefore filterを追加します。例:

before_filter :common_update_method