복붙노트

[RUBY-ON-RAILS] 레일에서, 당신은 어떻게 뷰를 사용하여 JSON 렌더링합니까?

RUBY-ON-RAILS

레일에서, 당신은 어떻게 뷰를 사용하여 JSON 렌더링합니까?

당신이 당신의 사용자가 컨트롤러에있어 귀하는 귀하의 의견 / 사용자 / 디렉토리라는 show.json과 사용자 번호 표시 후 파일을 만들 수 있다면 쇼 요청에 대한 JSON 응답, 그것은 좋은 것 싶어한다고 가정 작업은 파일을 렌더링 완료됩니다.

현재 당신의 라인을 따라 뭔가를 할 필요가 :

def show
  @user = User.find( params[:id] )
  respond_to do |format|
    format.html
    format.json{
      render :json => @user.to_json
    }
  end
end

그냥 자동과 같이 렌더링 가져옵니다 show.json 파일을 만들 수 있다면 그러나 그것은 좋은 것입니다 :

def show
  @user = User.find( params[:id] )
  respond_to do |format|
    format.html
    format.json
  end
end

이것은 나에게 슬픔의 톤을 절약 할, 내가 얻을 무섭게 더러운 느낌이 나는 컨트롤러 내 JSON을 렌더링 할 때 씻어 것

해결법

  1. ==============================

    1.당신은 당신의 respond_to 블록에서 같은 것을 할 수 있어야한다 :

    당신은 당신의 respond_to 블록에서 같은 것을 할 수 있어야한다 :

    respond_to do |format|
        format.json 
        render :partial => "users/show.json"
    end
    

    어떤 응용 프로그램 / 뷰 / 사용자 / _show.json.erb에서 템플릿을 렌더링합니다.

  2. ==============================

    2.뷰 사용자를 추가하십시오 / 당신이 JSON 형식에 대한 요청을 할 때이 렌더링해야 show.json.erb하고 파일을 다음과 같이 보일 수 있도록 당신은 너무가 ERB에 의해 렌더링되는의 추가 혜택을받을

    뷰 사용자를 추가하십시오 / 당신이 JSON 형식에 대한 요청을 할 때이 렌더링해야 show.json.erb하고 파일을 다음과 같이 보일 수 있도록 당신은 너무가 ERB에 의해 렌더링되는의 추가 혜택을받을

    {
        "first_name": "<%= @user.first_name.to_json %>",
        "last_name": "<%= @user.last_name.to_json %>"
    }
    
  3. ==============================

    3.다른 사람이 언급 한 것처럼 당신은 사용자 / show.json보기를 필요로하지만, 템플릿 언어를 위해 고려해야 할 옵션이 있습니다 ...

    다른 사람이 언급 한 것처럼 당신은 사용자 / show.json보기를 필요로하지만, 템플릿 언어를 위해 고려해야 할 옵션이 있습니다 ...

    ERB

    상자 밖으로 작동합니다. HTML에 대한 좋아요,하지만 당신은 빨리이 JSON에 대한 끔찍한 찾을 수 있습니다.

    RABL

    좋은 솔루션입니다. 종속성을 추가하고 DSL을 배울 수있다.

    JSON 빌더

    RABL 동일 거래 : 좋은 솔루션입니다. 종속성을 추가하고 DSL을 배울 수있다.

    일반 루비

    루비는 JSON을 생성에서 최고이며 해시 또는 AR 오브젝트에 to_json 호출 할 수있는 새로운 것을 배울 필요가 없습니다. 간단하게 (이니셜 라이저에서) 템플릿에 대한 .rb 확장을 등록 :

    ActionView::Template.register_template_handler(:rb, :source.to_proc)
    

    그런 다음 뷰 사용자 / show.json.rb을 만듭니다

    @user.to_json
    

    이 방법 볼에 대한 추가 정보를 원하시면 http://railscasts.com/episodes/379-template-handlers

  4. ==============================

    4.RABL은 아마 당신 ERB 구문에 청소기 대안을 찾고 있다면 내가 본 것을 이것에 가장 좋은 솔루션입니다. 다른 솔루션입니다 json_builder와 모험가는 모두 다소 오래된 것, 일부 패치없이 레일 3.1 작동하지 않습니다.

    RABL은 아마 당신 ERB 구문에 청소기 대안을 찾고 있다면 내가 본 것을 이것에 가장 좋은 솔루션입니다. 다른 솔루션입니다 json_builder와 모험가는 모두 다소 오래된 것, 일부 패치없이 레일 3.1 작동하지 않습니다.

    RABL는 보석을 통해 볼 수 있습니다 또는 GitHub의 저장소를 체크 아웃; 좋은 예도

    https://github.com/nesquena/rabl

  5. ==============================

    5.그냥이 페이지에 끝날 일이 다른 사람의 이익을 위해이 대답을 업데이트합니다.

    그냥이 페이지에 끝날 일이 다른 사람의 이익을 위해이 대답을 업데이트합니다.

    레일 3에서, 당신은 단지보기 / 사용자 / show.json.erb에서 파일을 작성해야합니다. @user 객체는 뷰에 사용할 수 있습니다 (이 HTML에 대한 것처럼.) 당신은 더 이상 to_json 필요하지 않습니다.

    요약하면, 그것은 단지

    # users contoller
    def show
      @user = User.find( params[:id] )
      respond_to do |format|
        format.html
        format.json
      end
    end
    

    /* views/users/show.json.erb */
    {
        "name" : "<%= @user.name %>"
    }
    
  6. ==============================

    6.그냥 내용으로 show.json.erb 파일을 추가

    그냥 내용으로 show.json.erb 파일을 추가

    <%= @user.to_json %>
    

    당신은 JSON에서 추가 속성을 생성하기 위해 몇 가지 추가 도우미 컨트롤러에서 사용할 수없는 방법, 즉 IMAGE_PATH (@ user.avatar) 또는 무언가를 필요로 할 때 때때로 유용합니다 :

    <%= @user.attributes.merge(:avatar => image_path(@user.avatar)).to_json %>
    
  7. ==============================

    7.이것은 잠재적으로 더 나은 옵션과 빠른 ERB 이상 : https://github.com/dewski/json_builder

    이것은 잠재적으로 더 나은 옵션과 빠른 ERB 이상 : https://github.com/dewski/json_builder

  8. ==============================

    8.임 RoR에 새로운 이것이 내가 알아 낸 것입니다. 당신은 직접 JSON 형식을 렌더링 할 수

    임 RoR에 새로운 이것이 내가 알아 낸 것입니다. 당신은 직접 JSON 형식을 렌더링 할 수

    def YOUR_METHOD_HERE
      users = User.all
      render json: {allUsers: users} # ! rendering all users
    END
    
  9. from https://stackoverflow.com/questions/2088280/in-rails-how-do-you-render-json-using-a-view by cc-by-sa and MIT license