2015-05-06 3 views
0

я есть класс HomeControllerрубинового instace области видимости переменных в HomeController

Могу ли я использовать одну переменную экземпляра (@events), который получил ответ от конечной точки в event_one методом, из другого метода event_two.

+0

сделать вы хотите использовать ответ от '' event_one' в event_two'? –

+0

Что вы подразумеваете под **? – alfakini

ответ

1

вы можете достичь использовать частный метод установки evnets

class HomeController < ApplicationController 
    def event_one 
    set_events 
    end 
    def event_two 
    set_events 
    end 
private 

def set_events 
    Req = **endpoint.connection** 
    res = req.body**(json format)** 
    @events = res  
end 

end 

Вы также можете вызвать этот метод, используя фильтр из вы хотите установить для каждого действия этого контроллера.

Надеюсь, это поможет!

+0

спасибо, но я хочу сократить время выполнения. я не хочу снова и снова читать строки подключения конечной точки. –

+0

Вы можете позвонить по этому методу, где это необходимо такой же вопрос здесь: http://stackoverflow.com/questions/9330486/same-instance-variable-for-all-actions-of-a-controller –

2

попробуйте использовать этот DRY код:

class HomeController < ApplicationController 
    before_action :set_events, only: [:event_one, :event_two] 

    def event_one 
    #your code here 
    # for example puts @events 
    end 

    def event_two 
    #your code here 
    # for example puts @events   
    end 

    private 

    def set_events 
    req = **endpoint.connection** 
    res = req.body**(json format)** 
    @events = res  
    end 

end 
+0

@GB. У меня есть ошибка в коде. BCS. this before_action:: set_events, only: [: event_one,: event_two] возвращает синтаксическую ошибку, неожиданно ':' –

+0

@LukasBaliak теперь видит редактирование. да была ошибка. теперь удален –

Смежные вопросы