Как использовать Помощников Приложения в Ruby on Rails

Используйте оператор forkJoin для ожидания массива наблюдаемых, например:

const { forkJoin, of } = rxjs; // = require("rxjs")

// simulate API call
const fetchFromApi = id => of(`result: ${id}`);

const ids = [1, 2, 3, 4, 5];
const requests = ids.map(fetchFromApi);
forkJoin(requests)
  .subscribe(e => console.log(e))

20
задан Andrew Hendrie 5 March 2015 в 03:39
поделиться

2 ответа

В то время как это работает, и я, как конечно, было известно, сделал это, это нарушает разделение MVC проблем. Помощники представления, как предполагается, не содержат логику контроллера/типа модели, которую это делает.

Вы могли бы рассмотреть рефакторинг этого назад в контроллер приложения. Помощники, как предполагается, для форматирования представления и материала, больше, чем как функция (который является тем, что я продолжал желать сделать, когда я начал.)

, Если Вы возвратились в свою модель Testimonail, сделайте мог бы сделать

def self.random
  Testimonial.find(:first, :offset => rand(Testimonial.count))
end

затем в Вашем контроллере приложения, Вы могли сделать:

def random_testimonial
  @random_testimonial ||= Testimonial.random
end

и вызов это от before_filter

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

50
ответ дан 29 November 2019 в 23:02
поделиться

Если я понимаю Вас правильно, Вы хотите метод, который возвращает тот же объект каждый раз, когда на него ссылаются в одном цикле запроса/ответа. Если это верно, можно достигнуть его с незначительным изменением помощнику:

 def random_testimonial
    @random_testimonial ||= Testimonial.find(:first, :offset => rand(Testimonial.count))
 end

Уведомление "|| =" часть. Это - идиома Ruby, которая говорит: присвойте значение @random_testimonial, если он уже не имеет значение.

Hope, которая отвечает на Ваш вопрос.

6
ответ дан 29 November 2019 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: