Rails: список текстовых полей в массив строк - PullRequest
0 голосов
/ 26 апреля 2010

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

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

<% 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 Ответ

1 голос
/ 26 апреля 2010

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

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

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

render :index 
...