Проход моделей Синатры и валидация - PullRequest
0 голосов
/ 24 октября 2011

Как уже упоминалось в другом аналогичном потоке, который я недавно начал, я портирую приложение ASP MVC на Sinatra, частично для обучения, частично для производственных целей.

В настоящее время мое приложение ASP MVC не имеет представлений, оно просто предоставляетмоделирует как Xml / Json и т. д. и принимает их таким же образом.Таким образом, в сценарии, когда кто-то отправляет модель на сервер, он автоматически привязывает объект, выполняет проверку, а затем возвращает ошибки проверки, если они есть, если они не выполняются с соответствующими действиями.

Теперь в Sinatraэто немного скромнее, чем ASP MVC, и это здорово, так как у меня больше выбора, как делать эти части, однако я не знаю, какие функциональные возможности gems / library доступны для этого.

Мой идеалВ этом сценарии мой чистый интерфейс html / js публикует модель как json, а затем превращает ее в реальную модель, где я могу проверить ее (через Sinatra или другую среду), а затем принять решение на основе результатов проверки.

Ответы [ 2 ]

1 голос
/ 24 октября 2011

Попробуйте взглянуть на этот камень:

Тогда вы должны передать атрибуты для объекта, который хотите создать, в виде хеша атрибутов, преобразованных в объект json:

{:attribute1 => "value1", :attribute2 => "value2"}.to_json

И в вашем приложении Sinatra поймайте их и создайте объект из этих атрибутов, и вы также можете использовать Sinatra для проверки:

def '/create_object' do
  content_type :json
  obj = Object.new(JSON.parse(params[:object]))

  if obj.save
    obj.to_json
  else
    error 400, user.errors.to_json
  end
end
1 голос
/ 24 октября 2011

Звучит как обычный случай для ORM.Например, вы можете использовать DataMapper .Имея это в ваших руках, вы можете просто отправить форму через HTTP на определенный маршрут и сделать что-то вроде:

post '/create' do
  @post = Post.new(params[:your_form])
  if @post.save
    erb :a_template
  else
    erb :your_form
  end
end

Где params [: your_form] - это хеш, содержащий содержимое вашей формы.JSON не нужен вообще.Если процесс сохранения завершится неудачно (по причине проверки или чего-либо еще), объект модели @post будет иметь ошибки, которые можно обработать в другом представлении (например, :your_form).

С наилучшими пожеланиями

Tobias

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