2013-10-10 3 views
-3
def ads 
    @ads = @search.result.recent.completed.paginate(page: params[:page], per_page: 10).limit(10) 
    end 

    def events 
    @events = @search.result.recent.completed.paginate(page: params[:page], per_page: 10).limit(10) 
    end 

    def pets 
    @pets = @search.result.recent.completed.paginate(page: params[:page], per_page: 10).limit(10) 
    end 

    def companies 
    @companies = @search.result.recent.completed.paginate(page: params[:page], per_page: 10).limit(10) 
    end 

как реорганизовать этот код в какой-то объемрубин методы Объем и DRY

+0

Непонятно, чего вы хотите достичь. Какова конкретная цель? –

+0

что-то вроде '@ads = @ search.scope_name' –

+0

Непонятно, должны ли @ad тогда равняться« по всему городу »,« по всей стране »или« международные »? Или что такое «scope_name». – vgoff

ответ

1

Это не ясно, что вы действительно хотите архивировать. Не зная контекста, я бы переписал ваш код примерно так:

%w(ads events pets companies).each do |name| 
    class_eval <<-END_OF_RUBY, __FILE__, __LINE__ + 1 

    def #{name} 
     @#{name} = search 
    end 

    ENF_OF_RUBY 
end 

private 
    def search 
    @search.result.recent.completed.paginate(page: params[:page], per_page: 10).limit(10) 
    end 
Смежные вопросы