2012-03-06 13 views
1

に応じて異なるrespond_toでモデルのメソッドを呼び出すのクリーンな方法私はこのようないくつかのコードを持っている:Railsの - 形式

respond_to do |format| 
format.html { @all_activities = current_user.recent_activities(@size_per_page,params[:start],nil) } 
format.csv { @all_activities = current_user.recent_activities(nil,params[:start],nil); build_activity_csv } 
format.xls { @all_activities = current_user.recent_activities(nil,params[:start],nil); 
    send_data(build_excel_all, :filename => "#{Time.now.strftime('%Y-%m-%d')}_Activity_All.xls", :type => "application/xls", :disposition => 'attachment') 
    } 
    format.js { @all_activities = current_user.recent_activities(@size_per_page,params[:start],nil) } 
    format.pdf { @all_activities = current_user.recent_activities(nil,params[:start],nil); prawnto :filename => "#{Time.now.strftime('%Y-%m-%d')}_Activity_All", :inline => false 
} 
end 

見ての通り、私は異なるフォーマットで同じメソッドの呼び出しが、一部でいます場合によっては@size_per_pageという変数を使用しますが、代わりにの代わりにというメソッドを呼び出します。

これを行うには、より良い、よりクリーンな、またはこれを繰り返さない方法をお勧めしますか?

おかげ

+0

また、私はそれが好きですhttp://codereview.stackexchange.com/ – ScottJShea

答えて

0

私は関数にそのコールを分けるだろうが、それは私だけです。ここで

は、私はそれを行うだろう方法は次のとおりです。

respond_to do |format| 
    format.html { set_all_activities(@size_per_page) } 
    format.js { set_all_activities(@size_per_page) } 
    format.csv do 
    set_all_activities(nil) 
    build_activity_csv 
    end 
    format.xls do 
    set_all_activities(nil) 
    send_data(
     build_excel_all, 
     :filename => "#{Time.now.strftime('%Y-%m-%d')}_Activity_All.xls", 
     :type  => "application/xls", 
     :disposition => 'attachment') 
    end 
    format.pdf do 
    set_all_activities(nil) 
    prawnto(
     :filename => "#{Time.now.strftime('%Y-%m-%d')}_Activity_All", 
     :inline => false) 
    end 
end 


def set_all_activities(size) 
    @all_activities = current_user.recent_activities(size, params[:start], nil) 
end 

右、私はparams[:start]を仮定しているし、最後のnilの引数が一致していますか?

+0

私はそれが好きです。とても清潔です。そして、はい、その2つは一貫しています:-) – Nobita

関連する問題