Как мне преобразовать простую программу с флеш-картой в приложение ROR? - PullRequest
1 голос
/ 11 мая 2010

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

class Card
  attr_accessor :answer, :question
  def initialize(answer = "", question="")
    @answer = answer
    @question = question
  end

  def quiz
    puts "What does #@question mean?"
    answer = gets.chomp
    if answer == @answer
      puts "Right"
      return true
    else
      puts "Wrong"
      return answer
    end
  end
end

class Cardlist
  attr_accessor :Cards
  def initialize(Cards = [])
    @Cards = Cards
  end
  def quiz
    Cards.each do |w|
      w.quiz
    end
  end  
end

Проблема, с которой я столкнулся с рельсами, заключается в том, чтобы выяснить, куда поместить логику, чтобы перебрать все карты в списке. Я сделал эти две модели:

class Card < ActiveRecord::Base
  belongs_to :cardlist
end

и

class Cardlist < ActiveRecord::Base
  has_many :cards
end

Я знаю, что логика приложения должна идти в контроллере, но если бы я выполнил действие "викторина" для моего контроллера Cardlist, как бы я сделал так, чтобы он перебирал все карточки? После каждой сгенерированной страницы викторины мне нужно получить ответ от пользователя, ответить (возможно, прошить), правильно ли это или нет, а затем перейти к следующему вопросу. Должна ли какая-либо из этой логики перейти в представление, чтобы убедиться, что оно отправляет обратно введенные пользователем ответы на контроллер? Как отправить информацию обратно в контроллер, не записав ее в БД?

1 Ответ

2 голосов
/ 11 мая 2010

IMO, экземпляр CardList инициализируется и сохраняется в сеансе, когда пользователь запускает тест (вы также можете дать пользователю возможность перезапустить, что будет другим методом на существующем / другом контроллере). Таким образом, CardList будет находиться в сеансе для пользователя, и вы будете в каждом тесте давать ему еще Card.

Таким образом, ваш метод «каждый» будет разделен между веб-хитами, если хотите.

Таким образом, ваше представление отображает Card для пользователя, который отвечает и нажимает метод на контроллере, где он перемещается к следующему Card и снова показывает представление. Использование переменной flash - это прекрасный способ дать пользователю обратную связь о предыдущем коммите.

Как вы уже сделали, ваша карта обычно будет моделью ActiveRecord. Вы также сделали свой CardList моделью ActiveRecord, и это отличный способ.

Обратите внимание, что вы можете использовать несколько различных терминов для quiz и quiz (например, QuizSet?), Чтобы сделать вещи немного яснее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...