2010-04-26 2 views
0

텍스트 필드에서 입력을 가져 와서 문자열 배열로 바꾸고 싶습니다. 게시물 요청을 제출 한 후, 다시 텍스트 필드를 표시하려고하지만 텍스트 필드의 값을 배열에 포함합니다.레일 : 텍스트 필드 목록에서 문자열 배열

<% 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라는 속성을 추가 할 수 있습니다 (배열에 serialize를 사용할 수 있음). setter를 사용하거나 before_validations 콜백을 사용하여 예제에서와 같이 mylist_array 값을 설정하십시오.

다소 모순 된 메모 : save 메소드의 끝 부분에 다음을 추가하면 실험이 일종의 작업으로 설정되지만 양식 게시 URL을 먼저 수정하거나 수동으로 경로를 추가해야합니다.

render :index 
+0

포인터에 감사드립니다. 실제로 한 텍스트 필드를 통해 레코드 대량 또는 일괄 삽입 할 수 싶습니다. 해결책을 찾지 못했지만 이미 다음과 같은 형식입니다. http://asciicasts.com/episodes/198-edit-multiple-individually 사실, REST 라우팅에 대한 이해가 필요합니다. – poseid

+0

레일 가이드는 좋은 자료이므로 도움이 될 것입니다 : http://guides.rubyonrails.org/form_helpers.html#building-complex-forms – MatthewFord