Похоже, что запросы переписи отключены для всех групп блоков в округах для переписи 2010 года с переходом на новую конечную точку API. Блоки все еще работают, как бы то ни было. Например:
https://api.census.gov/data/2010/dec/sf1?get=P001001,NAME&for=block:*&in=state:01%20county : 073
работает, тогда как
нет.
Обычно команда API восприимчива к внесению этих изменений в соответствии с запросом. Однако, поскольку правительство в настоящее время закрыто, этого не произойдет, пока они не вернутся к работе.
Для общего замысла Вы могли бы хотеть изучить понятие уровня Presenter (Поля сойки определяет его в его направляющих записи в блоге: Шаблон Предъявителя) как способ сохранить Ваши контроллеры тонкими и представления глупый при контакте с комплексом/многоуровневыми моделями.
У Вас мог быть ряд методов, например. step_1
, step_2
, и каждый проверяет, чтобы видеть, что необходимые данные из предыдущего шага были отправлены. Вы могли хранить данные на сессии так, чтобы, например, шаг 3 все еще имел доступ ко всем данным собранным и проанализированным на шаге 1. На заключительном шаге, помещенном все данные, которые Вы хранили на сессии плюс данные от предпоследнего шага до использования и создаете новую строку в базе данных или независимо от того, что Вы собираете данные для. Если пользователь портит шаг, перенаправьте их к предыдущему шагу и заполните форму для них с данными, которые они действительно заполняли; например, если пользователь портит шаг 2 и отправляет продвижение формы шагу 3, поймайте проблему в Вашем step_3
метод, перенаправьте пользователя к step_2
метод, и быть уверенным элементы формы на шаге 2 предварительно заполняется.
Если Вы не хотите хранить данные на сессии, когда Вы идете, Вы могли создать новую строку базы данных после того, как пользователь отправил шаг 1 и просто обновляет поля в той строке, поскольку Вы собираете новые данные на каждом последовательном шаге. У Вас мог быть некоторый флаг для 'полного' на строке, первоначально устанавливая его на 0 и затем установка его к 1 после того, как пользователь успешно завершил все шаги.
Вы могли также позволить пользователям переходить к предыдущим шагам (например, позволять пользователю возвратиться к шагу 3, когда он находится на шаге 5).
Скажите, что Ваш первый шаг имеет форму с полями 'имя' и 'электронная почта'. В Вашем step_2
метод, необходимо проверить это params[:name]
и params[:email]
были переданы и допустимы. Сохраните тех, которые на сессии или строке базы данных, однако Вы выбрали. Затем на шаге 2, у Вас есть форма с полями 'возраст' и 'пол'. В Вашем step_3
метод, необходимо проверить это params[:age]
и params[:gender]
были переданы и допустимы, и также необходимо удостовериться, что пользователь завершил шаг 1, чтобы препятствовать тому, чтобы пользователь ввел URL для доступа к шагу 3 непосредственно. И так далее.
class Campaign < ActiveRecord::Base
with_options(:if => lambda { |campaign| campaign.on_or_past_step(:spam_can) }) do |spam_can|
spam_can.validates_associated :spam_can
spam_can.validates_presence_of :spam_can
end
def on_or_past_step
:
:
end
end
это - происходящая работа, но я чувствую, что я на правильном пути. Я использую состояния AASM для определения который проверки работать. Я все еще не разработал, как маршруты должны работать, поскольку рассматриваемая модель в моем случае является ресурсом. например, какая группа полей должна быть действием редактирования?