Используя несколько контроллеров в одном представлении в направляющих

Вам следует взглянуть на справочную документацию . Это хорошо объяснено.

В вашем случае, я думаю, вы не можете использовать между, потому что вам нужно передать два параметра

Между - findByStartDateBetween… где x.startDate между? 1 и? 2

В вашем случае используйте комбинацию LessThan или LessThanEqual с GreaterThan или GreaterThanEqual

  • LessThan / LessThanEqual

LessThan - findByEndLessThan… где x.start < ? 1

LessThanEqual findByEndLessThanEqual… где x.start < =? 1

  • GreaterThan / GreaterThanEqual

GreaterThan - findByStartGreaterThan… где x.end>? 1

GreaterThanEqual - findByStartGreaterThanEqual… где x.end> =? 1

Вы можете использовать оператор And и Or объединить оба.

7
задан 19 May 2009 в 23:10
поделиться

3 ответа

Во-первых, вы должны поместить все методы хранения и сбора данных в ресурсы и модели, чтобы они были доступны со всех контроллеров. Тем не менее, вы можете сохранить внутренние операции изменения данных в ваших индивидуальных контроллерах. Как только вы его организовали вот так, вы можете делать то же, что делает Hobo: создать контроллер только для первой страницы, «front_controller», если хотите. Здесь вы можете отобразить данные, собранные из всех ваших моделей и ресурсов, а также ссылки на другие действия вашего контроллера.

Это несколько интересных мыслей о лучшей организации ваших моделей и контроллеров ( толстые модели, худые контроллеры - это практическое правило. Поскольку вы сказали, что используете другие API (например, lastfm и twitter), возможно, вы захотите взглянуть на this railscasts о создании моделей без ActiveRecord (моделей, которые не привязаны к базе данных)

здесь это какой-то псевдокод, имейте в виду, что он действительно нацелен только на ваш вопрос.

#  pseudo code  

  class TwitterController < ApplicationController
    def index
      @services = {
        :twitter => TwitterModel.find(:all, ...),
      }
    end
    def update_twitter
      TwitterUpdaterClass.update { |twit|
        _m = TwitterModel.new 
        _m.message = twit.msg
        _m.from = twit.from
        # ..
        _m.save
      }
    end
  end


  class MyIndexController < ApplicationController
    def index
      @services = {
        :twitter => TwitterModel.find(:all, ...),
        :lastfm => LastFmModel.find(:all, ...)
      }
    end
  end

это может быть намного лучше , чтобы фоновые рабочие обновляли ваши rest-сервисы вместо контроллера, который вам нужно вызывать каждый раз вы хотите получить последние твиты. вот хорошая статья, показывающая - 6 способов запускать фоновые задания в rubyonrails

  # more pseudo code

  class TwitterWorker < BackgrounDRb::MetaWorker
    set_worker_name :twitter_worker
    def create(args = nil) # instead of TwitterController.update_twitter
      TwitterUpdaterClass.update { |twit|
        _m = TwitterModel.new 
        _m.message = twit.msg
        _m.from = twit.from
        # ..
        _m.save
      }
    end
  end
8
ответ дан 6 December 2019 в 10:53
поделиться

Во-первых, вы должны поместить все методы хранения и сбора данных в ресурсы и модели, чтобы они были доступны со всех контроллеров. Тем не менее, вы можете сохранить внутренние операции изменения данных в ваших индивидуальных контроллерах. Как только вы его организовали вот так, вы можете делать то же, что делает Hobo: создать контроллер только для первой страницы, «front_controller», если хотите. Здесь вы можете отобразить данные, собранные со всех ваших моделей и ресурсов, а также ссылки на другие действия вашего контроллера.

6
ответ дан 6 December 2019 в 10:53
поделиться

Думаю, вам стоит немного прочитать о рельсах MVC-архитектуры . Мне кажется, что вы пренебрегаете частью М (одель). Модели должны содержать данные, таким образом, являясь наиболее важной частью вашего приложения.
Это несколько интересных мыслей о лучшей организации ваших моделей и контроллеров ( толстых моделей, худых контроллеры - это эмпирическое правило.
Поскольку вы сказали, что используете другие API (например, lastfm и twitter), вы можете ознакомиться в этом обзоре о создании моделей без ActiveRecord ( модели, не привязанные к базе данных)

Если вы также предоставляете API для своих пользователей, я предлагаю использовать подход RESTful, так как его действительно легко разрабатывать и поддерживать, как только вы освоите его.
Вам следует узнать больше о ресурсах , поскольку ваши localhost / lastfm и localhost / twitter являются ресурсами, а не представлениями. 1279] Надеюсь, это поможет. Удачи

4
ответ дан 6 December 2019 в 10:53
поделиться
Другие вопросы по тегам:

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