2012-09-30 4 views
1

배경 및 내 연구 나 브라우저에 페이지를 다시로드하지 않고 서버에서 클라이언트로 데이터를 전송하고자하는루비 : 서버에서 클라이언트로 비동기

를 JSON 데이터를 전송합니다. 나는 Rails guide을 읽고 JSON을 사용하는 것이 유망 해 보였습니다. (내가 틀렸다면 나를 바로 잡으십시오). JSON

JSON 렌더링

2.2.8 많은 AJAX 라이브러리를 사용하는 자바 스크립트 데이터 형식입니다. 는 내장 된 난간 지원 JSON 개체를 변환하고 다시 브라우저에 그 JSON을 렌더링 :

렌더링 : JSON => 당신은 렌더링 할 개체 에 to_json 호출 할 필요는 없습니다 @product . : json 옵션을 사용하면 이 자동으로 to_json을 호출합니다.


문제 나는 다시 브라우저 측에서이 JSON 객체를 렌더링 할 수 있어야합니다. 다음은 문제에 대한 적절한 코드입니다.

VideosController 내가 home 행동에 @next_video JSON 객체를 렌더링하려면

{ 
    "title": "<%= @video.title %>" 
    "url": "<%= @video.url %>" 
    "youtube_id": "<%= @video.youtube_id %>" 
    "genre": "<%= @video.genre %>" 
    "category": "<%= @video.category %>" 
    "likes": "<%= @video.likes %>" 
    "dislikes": "<%= @video.dislikes %>" 
    "views": "<%= @video.views %>" 
    "user_id": "<%= @video.user_id %>" 
    "created_at": "<%= @video.created_at %>" 
    "updated_at": "<%= @video.updated_at %>" 
} 

class VideosController < ApplicationController 
    include VideosHelper 

    def home 
    @video = Video.last 
    end 

    def next 
    @next_video = next_video(params[:id]) 
    render :json => @next_video 
    end 
end 

next.json.erb. 어떻게해야합니까?

+0

params [: id]는 (는) 집에서 사용할 수 있습니까? –

+0

예, 그렇게 할 수 있습니다. –

+0

REST를 따르지 않는 이유가 무엇인가요? –

답변

0

당신은 js 처리기가 필요합니다. home.html.erb에서 뭐 그런 : (당신이 @video 다음 조치를 초기화하지 않기 때문에)

$.ajax({ 
    url: '<%= next_video_path(@video.id) %>', 
    type: "GET", 
    dataType: "json", 
    success: function(data) { 
    // something brilliant here 
    } 
}) 

또한 next.json.erb 당신이 @next_video하는 @video 변경해야합니다.

$.ajax({ 
    url: '<%= video_path(@video.next) %>', 
    type: "GET", 
    dataType: "json", 
    success: function(data) { 
    // something brilliant here 
    } 
}) 

어디 @의 video.next 것 - 또한 하나 개 더 제안 당신은 REST 그 표시 옆의 이름을 변경하고 (지금 쇼로 대체 할 수 있기 때문에) 가정을 삭제하고 당신이 이전 코드를 변경해야합니다 사용할 수 있습니다 다음 동영상의 ID를 반환합니다.

+0

감사합니다. jquery의 get ajax 메소드에 대해 읽어 보겠습니다. –

관련 문제