2013-04-04 3 views
0

У меня есть приложение Rails, в котором я хочу представить пользователю последовательность вопросов в определенном порядке. Пользователь не может перейти к следующему вопросу, если он не ответил на предыдущий вопрос.Разработка эффективной непрерывной функции «Вопросы-ответы» для приложения Rails

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

Чтобы извлечь список вопросов для пользователя, мне нужно сделать дорогостоящий вызов дБ. Однажды для нового сеанса, если вы хотите, я хочу, чтобы пользователь мог видеть вопросы в определенном порядке, начиная с первого вопроса . Если пользователь попытался задать некоторые вопросы в прорывной сессии, он перейдет к вопросу, который он в последний раз остановил. Как реализовать его эффективно? Я считаю, что мне нужно кэшировать здесь.

ОКАЗАНИЕ просмотров:

Как вынести мнение на эту функцию? У меня может быть контроллер с исходным шаблоном вопроса. Когда пользователь пытается задать вопрос, должен У меня есть вопрос с текстовым обновлением с AJAX? У меня есть использовать jquery для этой цели или любой помощник Rails может помочь?

Любая помощь по дизайну, особенности рельсов-драгоценные камни, которые я могу использовать, будут приветствоваться.

ответ

1

Мой ответ не относится к Ruby on Rails, но он все равно должен работать.

Сначала я не загружал данные, которые вы потенциально не будете использовать заранее. Если у вас есть 10 вопросов, и вы показываете только по одному, то я бы просто загрузил первый, а затем, как только пользователь закончил первый, перейдите и загрузите второй. Не нужно загружать все десять, потому что, возможно, пользователь никогда не задает вопрос 10.

Предполагая, что пользователь уходит досрочно, вы можете просто позвонить AJAX, чтобы забрать, где вы остановились.

Я согласен с тем, что вы должны кэшировать эти вопросы.

шаги будут выглядеть потом:

  1. Первый вопрос - загружается через AJAX. Ответ и прогресс, сохраненный с помощью вызова AJAX.
  2. Если (1), то второй вопрос загружается через AJAX. Ответ и прогресс, сохраненный с помощью вызова AJAX.
  3. Повторяйте до завершения вопросов.

Таким образом, вы можете использовать информацию о пользователе/​​логине, чтобы позвонить AJAX, чтобы выбрать, где вы остановились. Я бы предположил, что это сделает вашу базу данных намного дешевле.

+0

Чтобы получить этот единственный вопрос, мне нужно каждый раз делать дорогой вызов db. В системе пользователь выбирает тему. В зависимости от выбранной темы я выбираю концепции по теме, затем навыки по каждой теме и, наконец, вопросы для каждого навыка. –

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