2011-01-23 1 views
0

많은 성분이 들어있는 조리법이있는이보기가 있습니다. 동적으로 내 재료를 정렬하고 전체 양식의 제출 버튼을 누르면 컨트롤러에 한 번만 변경 사항을 보낼 수 있기를 원합니다. 나는 꽤 오랫동안 인터넷 검색을 해왔다. 그리고 나는 이것에 관한 많은 질문을 본다. 대답은 아니지만 ... 나는 레일에 익숙하지만 자바 스크립트로 시작한다.제출시 동적으로 요소를 정렬하고 여러 변경 사항을 저장하는 방법

보기

<% form_for @receipe do |r| %> 
    <%= r.text_field.name %> 
    <% f.fields_for :receipe_ingredients do |ri| %> 
    <%= ri.fields_for :ingredients do |i| %> 
     <%= link_to i.object.name, ingredient_path(i.object.id) %> 
     <%= ri.text_field :specification %> 
    <% end %> 
    <% end %> 
<%= r.submit "save" %> 
<% end %> 
<%= link_to "add more ingredients", ingredients %> 

답변

0

당신이 JQuery와 또는 프로토 타입을 사용하는 경우는 언급하지 않습니다. 나는 프로토 타입을 가정,이를 확인 :

http://madrobby.github.com/scriptaculous/sortable-lists-demo/

+0

레일 2를 사용하고 있으므로 프로토 타입이 기본값이됩니다. 나는 작동하는 무언가를 사용하는 것에 대해 확신하고 있으며,이 파인트에서 프로토 타입 또는 jquery 중 어느 것이 더 견고/덜 해킹하는지 알지 못합니다. – svei

+2

@svei : 프로토 타입 + scriptaculous 및 jquery는 모두 훌륭한 라이브러리이고 Sortable 클래스 똑같이 강력합니다. 그러나 Rails에 기본으로 제공되는 프로토 타입이되는 것은 경험을 쌓기 전까지는 가장 좋은 옵션입니다. – tokland

+1

Tokland가 맞을지도 모릅니다. jQuery 나 Prototype에 익숙하지 않다면 Rails와 함께 제공되기 때문에 Prototype을 사용해야 할 것입니다. 프로토 타입을 제공하는 솔루션이 jQuery보다 더 어렵지는 않습니다. –

0

놓습니다 성분을 목록에서 그들을 정렬하기 위해 자바 스크립트를 사용하여보다.

This seems llike a good plugin for that.은보다, 제출

$("#submit").preventDefault(); 

처럼 뭔가 페이지의 일반적인 재로드를 차단하고 아약스와 응용하여 레일에 자바 스크립트 배열의 데이터를 전송합니다. 서버의 이전 주문을 자바 스크립트 배열의 새 주문과 비교하고 주문을 조정하십시오. 그게 도움이 될 것 같아.

나는 아약스를 사용하고 싶지 않다. 사용자가 순서를 바꿀 때마다 json 형식으로 숨겨진 텍스트 필드에 자바 스크립트 배열을로드하고 컨트롤러가 해당 json 문자열로 작업하여 항목의 순서를 찾는다. .

+0

"아약스를 사용하고 싶지는 않지만 사용자가 주문을 변경할 때마다 json 형식의 숨겨진 텍스트 필드에 자바 스크립트 배열을로드하고 해당 json 문자열을 사용하여 컨트롤러가 항목의 순서를 찾습니다." 이것이 제 신청서로가는 길이라고 생각합니다. 양식을 전체적으로 제출하고 싶습니다. – svei

+0

잘 해봐야한다.) 플러그인의 데모를 살펴보면 드래그 앤 드롭하면 JavaScript 배열이 표시된다는 것을 알 수 있다고 제안했다. 이 데모를 수정하여 데이터를 보이는 div와 숨겨진 필드 대신 숨겨진 필드에 넣을 수 있습니다. 나는 그것이 효과가 있는지 궁금 해서요, 제발 알려주세요. :) –

+0

그럼 prototype/scriptaculous를 살펴볼 것입니다. 추적 성을 위해이 게시물은 여기 내 이전 질문과 관련이 있습니다 (제 목표는 가능한 한 간단하게 서버에 편집하고 제출할 수있는 것입니다) : http://stackoverflow.com/questions/4641054/javascript-submit-multiple 컨트롤러에 대한 속성 변경 - 루비 온 레일 – svei