2009-08-12 4 views
0

모델에 배열 속성을 업데이트 할 수있는 뷰가 있어야 뷰에 동적으로 추가하여 뷰를 추가 할 수 있습니다. 그것은 심지어 의미가 있습니까?HTML 뷰에서 ActiveRecord 모델의 값 배열을 설정하십시오.

기본적으로 Foo의 URL이 있습니다. 그래서 DB에서 나는 URL의 쉼표로 구분 된 목록을 저장하고자하는 텍스트 데이터 유형을 가지고 있으며 배열을 할당하고 값을위한 배열을 얻을 수 있도록 기본 AR setter와 getter를 재정 의하여 처리합니다. 가입 및 분할.

나는 길을 잃은 것이 최선의 방법을 보여줍니다. 하나의 텍스트 필드가 필요하지만 다른 URL의 다른 텍스트 필드에 다른 URL을 추가하는 링크를 추가해야합니다.

이렇게하려면 '레일 방법'이 있습니까? 나는 내 자신을 굴려야합니까?

답변

3

정말 특정되지 않습니다 그것을 할 "방법 레일". jQuery 나 Prototype을 사용하여 자신의 자바 스크립트를 그리는 것은 그리 어렵지 않습니다. 보기에

:

<div id="url_list"> 
    <%= render :partial => "url_form", :collection => @my.urls %> 
</div> 

<%= button_to_function 'Add' { |page| page.insert_html :bottom, :url_list, :partial => "url_form", :object => Url.new } %> 

이 코드는 레일이 헬퍼를 볼 수 활용하고 프로토 타입을 사용하고 있다고 가정합니다. 또한 목록에서 URL을 제거하지도 않습니다. 서면으로 정확하게 작동하는지는 의심 스럽지만이 방법에 대한 일반적인 아이디어를 얻길 바랍니다. 자바 스크립트를 눈에 잘 띄지 않게 만드는 것이 가장 좋습니다.

가로장은 특히이 문제에 관한 것이 아니지만 라이언은 따라야 할 좋은 예인 양식의 동적 추가를 포함합니다.

행운을 빌어 요!

1

기본적으로 궁극적으로 발생하려는 것은 @foo.urls = params[:urls]이고 params[:urls]은 배열이고 #urls= 설정자는 현명한 배열을 처리 할 수 ​​있습니까?

나는이 정확한 경우에 개인적인 경험에서 말을하지만, 여기에 내가 시도 할 것입니다 무엇 없습니다 ... 모든

첫째, 모델에 serialize를 사용합니다. 예를 들어, serialize :urls, Array - 작동하는 getter 및 setter가있는 것처럼 들리지만 ActiveRecord에서 제공하는 것을 재사용하는 것이 좋습니다.

다음은보기에서 텍스트 필드의 이름을 지정하는 방법에 따라 다릅니다. 규약에 따라 명명 된 경우 Rails는 매개 변수를 배열로 구문 분석합니다. 이 규칙을 따르려면 텍스트 필드 이름이 foo[urls][]과 비슷해야합니다. text_field_tag "foo[urls][]" 또는 f.text_field_tag "urls[]"을 사용할 수도 있습니다 (비록 머리가 유효한지 여부를 알 수 없지만 시도해보십시오).

텍스트 필드 태그의 이름이 적절히 지정되면 나머지는 적절하게 따라야합니다. params[:foo][:urls]에 배열이 있고 Foo.new 또는 Foo.create 또는 @foo.update_attributes으로 전화를 걸어 params을 전달하면 올바른 작업을 수행 할 수 있습니다.

(이 모든 내 머리 위로 떨어져이다, 위의 구문에서 어떤 경과를 용서.)이 양식 필드의 동적 추가를 들어

관련 문제