Как создать мультиредактированную форму в рельсах - PullRequest
0 голосов
/ 16 ноября 2010

Мне нужно создать мультиредактированную форму в рельсах, вот так:

<form>
<input type='text' name='input1'></input>
<input type='text' name='input2'></input>
<input type='text' name='input3'></input>
<input type='text' name='input4'></input>
<input type='text' name='input5'></input>
<br>
<input type='text' name='input1'></input>
<input type='text' name='input2'></input>
<input type='text' name='input3'></input>
<input type='text' name='input4'></input>
<input type='text' name='input5'></input>
<br>
<input type='text' name='input1'></input>
<input type='text' name='input2'></input>
<input type='text' name='input3'></input>
<input type='text' name='input4'></input>
<input type='text' name='input5'></input>
<br>

... и так далее, тогда кнопка "<submit>" будет в самом конце. Один щелчок по кнопке подтверждения в конце должен собрать все значения и проанализировать их в контроллере.

Мне просто нужно знать, как создать форму мультиредактирования в представлении. Кроме того, каждый ряд уникален; Мне также нужно знать, как назначить уникальный идентификатор каждому из входных тегов; У меня есть уникальное значение ID, которое я мог бы использовать.

1 Ответ

0 голосов
/ 16 ноября 2010

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


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

class Post < ActiveRecord::Base
  attr_accessible :title, :body, :author, :published_at
end

Создайте форму с помощью помощника form_for.Это даст вам объект formbuilder для создания полей ввода.

<% form_for :post do |f| -%>
  <p>
    <%= f.label :title %>
    <%= f.text_field :title %>
  </p>
  <p>
    <%= f.label :body %>
    <%= f.text_area :body %>
  </p>
  <p>
    <%= f.label :author %>
    <%= f.text_field :author %>
  </p>
  <p>
    <%= f.label :published_at %>
    <%= f.datetime_select :published_at %>
  </p>
<% end -%>

Ключевым преимуществом использования помощников является атрибут name входов, которые он генерирует.Поскольку body принадлежит форме для post, ей будет присвоен атрибут name post[body].Эти атрибуты будут разбиты на следующий хеш:

:post => {
  :title => "This is the title",
  :body => "this is the body",
  :author => "John Doe",
  :published_at => "Mon Nov 15 2010 19:23:40 GMT-0600 (CST)"
}

Это означает, что вам не нужно вручную копировать поля в модель.Вы можете просто передать его непосредственно методу Model#new:

@post = Post.new(params[:post])

и затем выполнить проверки.Это соглашение становится обязательным, когда вы начинаете вкладывать модели друг в друга.

Более подробное руководство по формированию помощников см. Здесь .

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