2010-04-26 7 views
0

Я хочу взять ввод из текстового поля и превратить его в массив строк. После отправки почтового запроса я хочу снова отобразить текстовое поле, но включая значения текстового поля в массиве.Rails: список текстовых полей для массива строк

У меня есть мнение, что будет выглядеть как:

<% form_tag "/list2array" do -%> 
    <%= text_area_tag "mylist" %> 
<div><%= submit_tag 'save' %></div> 
<% end -%> 


<% @myArray.each do |item| %> 
    <%= item %> 
<% end %> 

И как старт для контроллера:

class List2ArrayController < ApplicationController 
    def index 
    end 

    def save 
    @myArray = params[:mylist].split("\r\n") 
    end 

end 

Однако, после того, как пост, я только получаю пустое текстовое поле без значений в массив из предыдущего POST.

Нужно ли использовать слой модели для моего эксперимента? Как? Или мне нужно изменить мой контроллер?

ответ

1

Сортировка ответа: Да. Вам нужно использовать некоторую форму хранилища данных, либо модели, либо вы можете сохранить ее в сеансе. Это не продолжение государства.

Если у вас есть модель, вы можете добавить атрибут mylist и mylist_array (вы можете использовать сериализацию для массива). Затем либо с помощью сеттера, либо обратный вызов before_validations задает значение mylist_array, как и в вашем примере.

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

render :index 
+0

спасибо за указатель. На самом деле я хочу иметь возможность вставлять массив или партию записей через одно текстовое поле. не нашел решение для этого сейчас, но это уже какая-то форма: http://asciicasts.com/episodes/198-edit-multiple-individally Действительно, необходимо некоторое понимание маршрутизации REST. – poseid

+0

Руководства Rails - хороший ресурс, это может помочь: http://guides.rubyonrails.org/form_helpers.html#building-complex-forms – MatthewFord