Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save filinivan/4aefeb361550acf0e5942777dac48e6f to your computer and use it in GitHub Desktop.
Save filinivan/4aefeb361550acf0e5942777dac48e6f to your computer and use it in GitHub Desktop.
Проверка слова в a1.app
Варвара, [06.05.19 17:39]
А в get запросе есть порядок какой то, какое слово выдавать или рандомно? И нужно, чтобы пользователь видел правильный ответ или только true/false? Не совсем понятно что значит теряется.
Ivan FIlin, [06.05.19 17:48]
[In reply to Варвара]
В обработчике get запроса при создании переменной (сущности) выбирается одна запись из базы данных (рандомно). В этой переменной содержится слово и перевод.
Пользователь не должен видеть правильный ответ. Я планировал далее сравнивать в обработчике post запроса ответ пользователя с правильным ответом и выводить соответствующее сообщение.
Насколько я понял переменная в которой я передаю выбранные из базы данных данные доступна для erb файла.. но уже не доступна при обработке post запроса в app.rb
Ivan FIlin, [06.05.19 17:50]
[In reply to Варвара]
[ Photo ]
Получаю такую ошибку
Fedor Koshel, [06.05.19 17:51]
[In reply to Ivan FIlin]
одной из переменных нет
Roman, [06.05.19 17:51]
[In reply to Ivan FIlin]
значит что вместо обьекта у тебя нил приходит, ставь дебагер и смотри почему так
Fedor Koshel, [06.05.19 17:51]
либо @answer либо @words
Fedor Koshel, [06.05.19 17:52]
проще всего воткнуть перед этой строкой binding.pry и посмотреть что они из себя представляют в момент выполнения
Roman, [06.05.19 17:52]
скорее всего обьект просто не создан или не найден
Fedor Koshel, [06.05.19 17:52]
https://github.com/pry/pry
Roman, [06.05.19 17:53]
[In reply to Fedor Koshel]
pry или byebug - что выбрать чтобы быть трушным программистом?
Roman, [06.05.19 17:53]
[ 😀 Sticker ]
tql, [06.05.19 17:53]
[In reply to Roman]
Puts
Ivan FIlin, [06.05.19 17:53]
Он не видит @words. Как правильно поступить в этой ситуации? Я создаю в get обработчике @words - передаю в erb. Далее пользователь пишет свой ответ и передает post обработчику. И тут уже @words не существует.. видимо затерается сборщиком мусора.
Иван, [06.05.19 17:54]
[In reply to Ivan FIlin]
ну в пост передавай id этой записи и дергай из базы
Roman, [06.05.19 17:54]
[In reply to Ivan FIlin]
в create поставь pry и смотри что у тебя в параметры сетится, ну емана)
Ivan FIlin, [06.05.19 17:54]
Ок. Понял. Сейчас этим путем попробую пойти. Спасибо.
Иван, [06.05.19 17:54]
[In reply to Ivan FIlin]
сборщик тут не причем, это 2 разных запроса
Roman, [06.05.19 17:55]
а лучше на выходе из create посомтри что у тебя получается
Ivan FIlin, [06.05.19 17:56]
[In reply to Иван]
id записи в форму как-то подставить? Что бы с параметрами поймать в обработчике post запроса?
Варвара, [06.05.19 18:01]
А как изначально @words выглядела с англ и рус словом? Если в одной переменной содержится слово и перевод, то сравнивая с ответом надо указать либо точно место с переводом, либо в ответ добавлять рус слово. Получается сравниваете @words (два слова) с @answer (одно слово)
Иван, [06.05.19 18:02]
[In reply to Ivan FIlin]
либо в форму, либо можешь слать запрос на /learn/id
Fedor Koshel, [06.05.19 18:03]
[In reply to Ivan FIlin]
Надо понимать что период работы твое приложения - это один запрос. Следующий запрос начинается и обрабатывается с нуля и ничего не знает о том, что было раньше
Fedor Koshel, [06.05.19 18:04]
можно сохранить данные в сессию, куки, бд, редис и потом доставать каждый раз, но в твоем случае проще добавить вопрос в форму ответа
Ivan FIlin, [06.05.19 18:04]
Спасибо за ответы. Вечером постараюсь разобраться с этой задачей.
Fedor Koshel, [06.05.19 18:04]
тоесть в erb можно сделать hidden поле и просто туда записать вопрос
Fedor Koshel, [06.05.19 18:04]
тогда при отправке формы тебе в параметрах придет и вопрос и ответ
Ivan FIlin, [06.05.19 18:05]
[In reply to Fedor Koshel]
Наверно это "не тру" способ? Выглядит как "костыль".... Для моего случая конечно пойдет..
Fedor Koshel, [06.05.19 18:05]
[In reply to Ivan FIlin]
почему?
Fedor Koshel, [06.05.19 18:06]
вполне стандартный
Fedor Koshel, [06.05.19 18:06]
другой вариант - создать можель теста и сохранить в базу данных для конкретного пользователя
Ivan FIlin, [06.05.19 18:06]
Хмм.. Обязательно попробую сегодня и этот способ. Спасибо, товарищи!
Fedor Koshel, [06.05.19 18:06]
потом при получении ответа доставать по id из базы данных и сравнивать
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment