2012-12-12 5 views
0

가 어떻게 내가하고 싶은 것은 .... JQuery와 아약스에 새로 온 레일에 루비에 표시 .. 난에 파일 내용 저장을 읽는 컨트롤러 액션을 변하기 쉬운. jquery에서 파일 이름을 전달하고 jquery에서 변수를 통해 파일 내용에 액세스하고 div 태그에 표시하려고합니다. 이를 위해 내가 컨트롤러에서이 코드 ... JQuery와의액세스 컨트롤러 액션 변수와

def download 
    IO.foreach "#{RAILS_ROOT}/Backend/History/#{params[:filename]}" do |line| 
     @file_content << line 
     @file_content << '<br/>' 
    end 
end 

코드가

requests_controller.rb를 ... 사용하고

jQuery("#play").click(function() { 
    jQuery.get("/requests/download_log", { filename: filename}); 
}); 
+0

변수를 자바 스크립트에 저장하고 어떻게 든 조작하고 싶습니까? 그렇다면; http://stackoverflow.com/questions/3155090/how-to-access-an-instance-variable-inside-a-javascript-function-in-ruby-on-rails – Adil

+0

직접 질문과 관련이 없지만 파일과 관련이 있습니다. 이름 관련 코드는 매우 위험합니다. 그것은 임의의 파일 이름을 삽입 할 수있게하여 거의 모든 파일을 다운로드하는 데 사용할 수 있습니다. 예를 들어'filename' 매개 변수'../../ config/database.yml'는 데이터베이스 구성 파일을 다운로드합니다. 거기에 저장되었을 수도 있습니다. –

답변

0

아니고 당신이 뭘 하려는지 분명. 컨트롤러 변수에 jquery 뷰에 액세스 하시겠습니까, 아니면 Ajax jquery 함수에서 컨트롤러 작업을 요청하고 응답에서 일부 데이터를 가져 오시겠습니까?

내가 처음 일을하고 싶은 생각, 그래서 당신은 컨트롤러에서 수행 할 수 있습니다에 의한 경우 지금

class MyController < ApplicationController 
    def my_action 
    @file_content = some_content 
    end 
end 

보기 my_action.html.erb

<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#play").click(function() { 
     $.get("/requests/download_log", { filename: <%= j @file_content %> }); 
    }); 
    }); 
</script> 

에 당신이 할 수있는 두 번째 일을하고 싶습니다.

class MyController < ApplicationController 
    def download_log 
    @file_content = some_content 
    respond_to do |format| 
     format.json { render json: @file_content.to_json } 
    end 
    end 
end 

및보기

success_handler = function(json_data) { 
    // Do any operation with the json_data 
} 

error_handler = function(jqXHR, textStatus, errorThrown) { 
    // Handle ajax errors here 
} 

$("#play").click(function() { 
    $.ajax("/requests/download_log.json", dataType: "json", success: success_handler, error: error_handler); 
});