레일에서 뷰를 사용하여 JSON을 렌더링하려면 어떻게 해야 합니까?
사용자 컨트롤러에서 show request에 대한 json 응답을 얻으려면 views/users/dir에 show.json이라는 이름의 파일을 만들고 사용자 #show 액션이 완료되면 파일이 렌더링됩니다.
현재 다음과 같은 작업을 수행해야 합니다.
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
이렇게 하면 많은 슬픔을 덜 수 있고 컨트롤러에서 아들을 렌더링할 때 느끼는 끔찍하고 더러운 느낌을 씻어낼 수 있을 거야
이런 걸 할 수 있을 거예요respond_to
블록:
respond_to do |format|
format.json
render :partial => "users/show.json"
end
템플릿을 렌더링합니다.app/views/users/_show.json.erb
.
보기 추가 시도users/show.json.erb
이것은 JSON 포맷을 요구할 때 렌더링해야 합니다.또한 erb에 의해 렌더링되는 이점도 얻을 수 있기 때문에 파일은 다음과 같습니다.
{
"first_name": <%= @user.first_name.to_json %>,
"last_name": <%= @user.last_name.to_json %>
}
(2023년 1월 23일 편집)
다른 사용자가 언급했듯이 사용자/show.json 뷰가 필요하지만 템플릿 언어에는 고려해야 할 옵션이 있습니다.
ERB
바로 사용할 수 있습니다.HTML에는 매우 좋지만, JSON에 있어서는 매우 곤란하다는 것을 금방 알 수 있습니다.
좋은 해결책입니다.의존관계를 추가하고 DSL을 익혀야 합니다.
RABL과 같은 조건: 좋은 솔루션.의존관계를 추가하고 DSL을 익혀야 합니다.
플레인 루비
Ruby는 JSON 생성에 뛰어나고, 당신이 부를 수 있는 새로운 것은 아무것도 없다.to_json
Hash 또는 AR 오브젝트 위에 있습니다.템플릿 확장자 .rb를 등록하기만 하면 됩니다(이니셜라이저).
ActionView::Template.register_template_handler(:rb, :source.to_proc)
그런 다음 뷰 users/show.json.rb를 만듭니다.
@user.to_json
이 어프로치의 상세한 것에 대하여는, http://railscasts.com/episodes/379-template-handlers 를 참조해 주세요.
RABL은 ERB 구문에 대한 보다 깨끗한 대안을 찾고 있다면 지금까지 본 솔루션 중 가장 좋은 솔루션일 것입니다.json_builder와 argonaut은 둘 다 다소 구식이므로 패치 적용 없이는 Rails 3.1과 함께 사용할 수 없습니다.
RABL은 보석 또는 GitHub 저장소를 통해 이용할 수 있습니다.좋은 예도 있습니다.
https://github.com/nesquena/rabl
이 페이지에 게재되는 다른 사용자를 위해 이 답변을 갱신합니다.
3에서는 Rails 3에서 .views/users/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 %>"
}
더하면 돼요.show.json.erb
을
<%= @user.to_json %>
할 수 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ""image_path(@user.avatar)
JSON에서 할 수 .
<%= @user.attributes.merge(:avatar => image_path(@user.avatar)).to_json %>
이는 ERB보다 빠른 옵션일 수 있습니다.https://github.com/dewski/json_builder
RoR에 처음 와봤는데 이게 내가 알아낸 거야.json 형식을 직접 렌더링할 수 있습니다.
def YOUR_METHOD_HERE
users = User.all
render json: {allUsers: users} # ! rendering all users
END
RoR부터 시작하는데, 혹시 그게 아니라면 사과드립니다.이 방법을 찾았습니다.이 방법이 https://guides.rubyonrails.org/v5.1/layouts_and_rendering.html#using-render에서 설명한 가장 간단한 방법일 가능성이 있습니다.
2.2.8 JSON 렌더링
렌더링하는 오브젝트에 대해 to_json을 호출할 필요는 없습니다.:json 옵션을 사용하면 렌더가 자동으로 to_json을 호출합니다.
당신이 해야 할 일은 이것뿐입니다.
respond_to do |format|
format.html
format.atom
format.json { render json: @user }
end
또한 ./users/1/custom_action.json에서 json 응답을 렌더링합니다.
언급URL : https://stackoverflow.com/questions/2088280/in-rails-how-do-you-render-json-using-a-view
'programing' 카테고리의 다른 글
openweathermap.org JSON에서 반환되는 온도(섭씨)는 어떻게 계산합니까? (0) | 2023.03.18 |
---|---|
dbms_blob.getlength() vs. length()를 사용하여 Oracle에서 BLOB 크기를 검색합니다. (0) | 2023.03.18 |
React 상태에서 Set 데이터 구조 사용 (0) | 2023.03.18 |
Meteor 앱 - 배포된 앱의 DB 리셋 (0) | 2023.03.18 |
JSON 직렬화에서 속성 이름의 기본 대소문자 (0) | 2023.03.18 |