2013-06-16 5 views
3

Я пытаюсь создать форму с несколькими текстовыми полями, каждая из которых имеет соответствующий флажок. В основном, приложение работает как «Если да (флажок установлен), оставьте поле textarea пустым. В противном случае заполните свое объяснение, почему вы считаете, что это неправильно».Отображение списка в форме Play2

В моделях, у меня есть

case class AnswerMapping(id: Long, status: Option[String], result: Option[String] 

val form = Form[Seq[Answers](
    mapping(
    "details" -> 
     list(mapping(
     "id" -> longNumber, 
     "status" -> optional(text), 
     "result" -> optional(text) 
    )(AnswerMapping.apply)(AnswerMapping.unapply) 
))(apply)(unapply) 
) 

В взглядов, у меня есть

@helper.form(action = controllers.conflict.routes.Answer.updateAnswer(ans.id()) { 
    <div class="row-fluid"> 
    <div class="span12"> 
     @ans.details.get.zipWithIndex.map { case(detail, index) => 
     @helper.textarea(
      form(("details[" + index + "].result")), 
      'class -> "input-xlarge resizable", 
      'id -> ("box" + index), 
      '_label -> "") 
     } 
    </div> 
    <div class="controls"> 
     <input value="Submit" type="submit" class="btn btn-primary"> 
    </div> 
    </div> 
} 

Визуализированное HTML выглядит <textarea id="box0" name="details[0].result" class="input-xlarge resizable" id="box0"></textarea>

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

Ans.form.bindFromRequest.fold(
    formWithErrors => Ok(views.html.answer.edit(answer, formWithErrors)), 
    ans => { // save the answer } 

Мой вопрос:

  1. ли выше, details[0].result правильный синтаксис для доступа к элементу в списке Форм,
  2. Я не совсем понимаю, почему у моей формы есть ошибки. Два поля, которые необходимо заполнить, помечены как необязательные, просто потому, что иногда флажок не установлен, а иногда поле ответа остается пустым. Возможно, это из-за поля id? Я уже установил его в методе apply/unapply, поэтому я не уверен, что мне не хватает.

Спасибо за все входные данные.

+0

Как ваш 'Answers.class' код выглядит? Вы пытались написать тест для подачи своей формы? Вы пытались обрабатывать ошибки формы, если да, то что вы получаете? – arussinov

+0

Я не знаю Scala, но где в форме вы передаете 'id' на контроллер? Я не вижу в форме формы ''. Если вы его не пройдете, форма будет иметь ошибку, потому что она не является «необязательной» в вашей форме. (хотя вы, кажется, прямо передаете его методу контроллера, я могу ошибаться, но я не думаю, что он работает так) – Aerus

+0

Что касается вашего первого вопроса, да, это выглядит правильно. – Aerus

ответ

0

см документ: Repeated values

@helper.repeat(myForm("emails"), min = 1) { emailField => 
    @helper.inputText(emailField) 
} 
Смежные вопросы