0

컨트롤러에서 application.js 또는 해당 js.coffee 파일에 포함 된 Javascript 기능을 실행할 수 있습니까? 뷰 렌더링 또는 다시로드 없음 ? 나는. 그냥 단순한레일즈 컨트롤러에서 Javascript 기능 실행 (뷰 렌더링 또는 다시로드 없음)

def connect() 
    call js: "connect_through_javascript();" 
    render :nothing => true 
end 

렌더링 대신 : 아무것도,보기가 그대로 남아있을 수있는 방법이 있습니까? 은 또한 그것으로 PARAMS을 보낼 수있을 것 즉

def connect(param1, param2, param3) 
    call js: "connect_through_javascript(#{param1}, #{param2}, #{param3});" 
    render :nothing => true 
end 

는 콜백의 위해 차례로 다른 컨트롤러 액션에 갈 것이다라는 자바 스크립트 함수입니다.

나는 팔로마 보석을 사용하려하지만, 종속성을 추가하지 않고도 이것이 가능한지 알고 싶다.

답변

1

원하는 것은 AJAX입니다. JavaScript는 jQuery와 같은 JavaScript 라이브러리를 사용하거나 readyState가 4이고 기본 JavaScript를 사용하는 경우 상태가 200이면 성공 콜백에서 HTTP 응답 본문에 지능적으로 작업해야합니다.

HTTP 요청 - 응답주기가 계속되었습니다.

EDIT : 여기 간단한 예이다

되는 HTML

<ol id="comments"></ol> 

<script type="text/javascript"> 
    var xhr = new XMLHttpRequest(); 

    xhr.onreadystatechange = function() { 
     if (this.readyState === 4 && this.status === 200) { 
      document.getElementById("comments").innerHTML = this.responseText; 
     } 
    }; 

    xhr.open("GET", "/posts/123/comments_ajax"); 

    xhr.send(null); 
</script> 

레일즈 컨트롤러 app/views/posts/comments_ajax.html.erb

class PostsController < ApplicationController 

    def comments_ajax 
     @comments = Comment.where(:post_id => params[:id]) 
    end 

end 

내용 :

<%= @comments.each |comment| do %> 
    <li><%= comment.text %></li> 
<% end %> 
+0

매우 명확한 구현 예제에 감사드립니다. :) 팔로마 보석은 현재의 문제를 해결하는 것처럼 보이지만, 어떤 경우에는 당신의 해결책을 선호합니다. – jiku

+0

전 Paloma를 사용하지 않았습니다. 재미 있네. Rails 측에서 Ajax를 더 쉽게 만들기위한 Ruby 클래스 lib와 Rails RESTful 서비스와 쉽게 상호 작용할 JavaScript 클래스를 작성하기위한 JavaScript 클래스 라이브러리를 모았다. –

관련 문제