2012-09-13 3 views
0

애셋 디렉토리의 자바 스크립트에서 부분을 렌더링하려고합니다. assets 디렉토리에서 render 메소드를 호출 할 수 없다는 것을 알게되었습니다. 하지만 자산 디렉토리에서 내 ajax 명령을 이동할 수 없습니다. 그래서 내 질문은 지금, 내보기에서 action.js 파일에 내 아약스 결과를 전달하는 방법입니다.애셋에서 부분을 렌더링하는 방법 자바 스크립트

: /app/javascript/mymodel.js.coffee

$(document).ready -> 
---some actions ---- 
$('.myid').click -> 
    ---some action--- 
    $.ajax 'mypath' 
     dataType: 'json' 
     success: (result)-> 
      ---render result in partial on myid-div--- 

그래서 어떻게 위에 내 사랑하는 결과와 대한 myid을 통과 않습니다

그래서 나는 온 클릭 jQuery를 이벤트에 아약스를 호출

$('.myid').html("<%= escape_javascript(render(:partial => 'myartial')) %>"); 

/app/views/mymodel/show.js.erb

그것을 밖으로 렌더링하려면?

나는 꽤 많은 시간 동안 내 머리를 두드리고있어, 그래서 나는 정말로 도움이 될 것이다!

답변

0
$(document).ready -> 
---some actions ---- 
$('.myid').click -> 
    ---some action--- 
    $.ajax 'mypath' 
     dataType: 'json' 
     params: (pass in what you need, i don't know the exact syntax, just google it) 
     success: (result)-> 
      ---render result in partial on myid-div--- 
controller 

def show 
    @result = params[:result] 
end 

view 
show.js.erb 
$('#some_id').html('<%= render("mypartial").html_safe %>'); 

@result 지금

이 컨트롤러 메소드로 AJAX 호출에서 매개 변수로 결과를 전달 액세스 할 수 있습니다. 그런 다음 뷰에서 인스턴스 변수를 사용할 수 없도록 인스턴스 변수 (예 : 매개 변수의 @result)를 인스턴스화하십시오.

+0

멋진 답변입니다. 슬프게도 내 코드를 만들 수 없습니다.내 아약스 전화로 제 정보를 얻습니다. 하지만 성공 함수에서 렌더링을 어떻게 호출합니까? 그걸 통해 나를 걸을 수 있습니까? 말할 함수 호출이 _mypartial 형식으로이 인수가 js? – Jan

+0

그래서 show 메소드가 실행 된 후 JS 파일을 실행합니다 (show.js.erb를 찾을 것입니다). (업데이트 된 답변 확인) – YaBoyQuy

0

당신은 당신의 부분을 렌더링 할 mymodel 컨트롤러의 메소드를 호출 할 수 있지만, 일부의 파일 이름은 밑줄 당신의 예에서 _

, 이러한 코드 render :partial => 'show'이 작동을 시작한다 당신의 당신이 그들을 넣을 경우 JS 렌더링하기 mymodel 컨트롤러에 show.js.erb_show.js.erb으로 바꿔야합니다.

낙관적 인 전망을 위해서는 _show.js.erb을 렌더링 할 수 있어야하고 render _show.js.erb과 같은 내용이 터미널 내부에서 성공적으로 표시되어야합니다.

하지만 js.erb에 구문 오류가 있기 때문에 레일이 js.erb를 자바 스크립트로 처리하고있는 것은 아닙니다. (절대적으로 확신합니다!). 그래서 당신은 또한 자세한 내용은 my questions

$('.myid').html("<%= escape_javascript(render(:partial => 'myartial')) %>");

$('.myid').html('<%= escape_javascript(render(:partial => 'myartial')) %>');

에 체크 아웃 변경 될 수 있습니다. 나는 전에도 비슷한 문제에 직면했다. 또한 ajax 호출을 보내고 .js.erb를 렌더링하는 방법의 예를 보여줍니다.

:remote => trueline_items_path으로 아약스 요청을 보냅니다.

라우팅에 따라 format 메서드는 create 메서드를 호출하고, 규약에 따라 create.js.erb을 렌더링합니다. 또는 format.js {render :partial=> "create"}으로 js.erb를 렌더링 할 수 있습니다. _create.js.erb이있는 경우

+0

답변 해 주셔서 감사합니다. 나는 그것이 내 문제의 일부가 아니라고 생각한다. '쇼'는 나의 부분이 아니 었습니다. 액션을위한 js 템플릿이었습니다. 나의 쇼는 그것 앞에있다. 그리고 지금까지는 전화가 안된다. 왜냐하면 내가 어떻게하는지 모른다. 왜 내가 내 show.js에서 "with"로 바꿔야한다고 생각합니까? – Jan

+0

부분 렌더링은 ajax 호출에서 일반적입니다. [이것을 확인하십시오] (http://apidock.com/rails/ActionController/Base/render). 내 생각에 당신이 ""myartial의 부분이 많이 나올 것이라고 예측하기 때문에 ""로 바꾸어야하고, ""안에 ""을 넣을 수는 없습니다. Firebug를 사용하여 Ajax 응답을 볼 수 있습니다 – code4j

+0

제 응답을 수정했습니다 :) js를 렌더링하는 방법을 이해하는 데 도움이되도록 확인하십시오 – code4j

관련 문제