2012-06-26 3 views
0

이것은 내 양식이며 정상적으로 작동하지만 지금은 AJAX로하고 싶습니다.AJAX Rails 3.2 양식 제출

<%= form_tag variant_path(variant.id), :method => :put, :class => 'update_inv_form' do %> 
    <%= text_field_tag :inventory_quantity, variant.inventory_quantity %> 
    <%= submit_tag 'Update' %> 
<% end %> 

내가 추가 할 때 : 양식이 성공적으로 AJAX를 통해 제출 원격 => 진정한 속성을 (나는 그것이 서버에서 일어나고 볼 수 있고 내가 페이지를 새로 고칠 때 변경 사항을 볼 수 있습니다). 페이지를 새로 고치지 않고 변경 사항을 표시하기 위해보기를 올바르게 업데이트하려고합니다. 나를 알아이 그림 도움이 그가 말했듯이 솔루션은 정확히 밝혀 대답을 주셔서 감사합니다 (I 여기에 액티브 모델과 함께 작동하지하고 있습니다.)

def update 
    variant = ShopifyAPI::Variant.find(params[:id]) 
    variant.inventory_quantity = params[:inventory_quantity] 
    variant.save 
    redirect_to root_path 
end 

UPDATE : 이것은 내 업데이트 작업입니다 그러나 나는 작은 문제에 부딪쳤다. 내가 업데이트하고자하는 뷰는 app/views/home/index.html.erb에 있으며 나는 이것을 처리하고있었습니다 : Variants # update. (변형 컨트롤러, 업데이트 작업)

내보기가 동일한 디렉터리에 내 update.js.html을 넣었습니다 : app/views/home 및 서버에서 500 오류 : 템플릿 누락되었습니다. 밖으로, 나는 app/views/variants/ 디렉토리를 만들고 거기에 update.js.html 파일을 넣어 야했다. 문제 해결됨.

답변

5
당신은 JS 포맷에 대응하는 액션을 변경해야합니다

는 :

def update 
    @variant = ShopifyAPI::Variant.find(params[:id]) 
    @variant.inventory_quantity = params[:inventory_quantity] 
    @variant.save 

    respond_to do |format| 
    format.html { redirect_to root_path } 
    format.js 
    end 
end 

그런 다음 페이지를 업데이트 자바 스크립트와의 update.js.erb 파일을 만들 수 있습니다. 이 같은 사업부에 변형을 추가 할 수의 당신이 _variant.html.erb 부분이 있다고 가정 해 봅시다 (당신이 jQuery를 사용하는 가정) :

$('.variant-list').append('<%= escape_javascript(render(:partial => "variant", :object => @variant)) %>'); 

갱신 여기

있어 당신이 update.js.erb' file (Note: I have not tried this code). Let's say you have the following code in your을 사용하는 방법에 대한 예는 index.html.erb` :

<ul class="variants"> 
    <li id="101">Variant 1</li> 
    <li id="102">Variant 2</li> 
    <li id="103">Variant 3</li> 
</ul> 

귀하의 updated.js.erb이 같은 것을 볼 수 있었다 :

,
$('.variants #<%= @variant.id %>').text('<%= @variant.title %>'); 

이것은 목록에서 방금 업데이트 한 변형을 찾아 변종 제목을 새 것으로 변경합니다.

+0

감사합니다. 나중에 다시 시도하고 업데이트를 게시합니다. 어떤 부분도 사용하지 않고 있으며,이 형식은 index.html.erb 페이지에 있습니다. 그리고 당신이 여기있는 것처럼 지역 변수 대신에 업데이트 액션에서 @variant 인스턴스 변수를 사용하고 있습니까? – dylanjha

+0

예, update.js.erb 파일의 변수에 액세스해야하기 때문입니다. 업데이트 할 때 페이지를 업데이트하는 방법을 더 잘 이해할 수 있도록 답을 추가했습니다. –

+0

감사합니다! 내가 실행 js 템플릿을 점점 조금 붙어있어하지만 결국 알아 냈어. 나는 업데이 트를 올렸다. 다시 한번 감사드립니다. – dylanjha