我有一些像这样的代码:
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 变量,有时我使用 nil 而不是。
有人建议采用更好,更清洁或不重复的方式吗?
由于
答案 0 :(得分: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
参数是一致的,对吗?