2013-12-23 33 views
8

我目前正在將ActiveModelSeralizer轉換爲JBuilder來呈現jsons。我想知道,用ActiveModelSeralizer我可以這樣做:Rails:在視圖上下文之外使用JBuilder視圖

text_content = UserSeralizer.new(user, :root => false) 

而且receieve名爲text_content變量的JSON字符串。現在我正在切換到ActiveModelSeralizer,無論如何要用JBuilder來完成上述操作?

我有一個看法部分在app/view/api/v1/users/_user.json.jbuilder裏面有無論如何渲染該部分到一個變量?

感謝

+0

爲什麼你需要分配JSON到TEXT_CONTENT? – Gjaldon

回答

0

「我的應用程序/視圖/ API/V1 /用戶/ _user.json.jbuilder的視圖部分內反正是有渲染部分變成一個變量?」

如何

json.partial! 'api/v1/users', users: @users.all 

,這會使得部分並創建一個新的變量,用戶,內容@ users.all

17

是的,可以。只需使用Jbuilder.encode方法:

# somewhere in User model 

def display_to_json 
    Jbuilder.encode do |json| 
    json.name name 
    json.location display_location 
    json.description description 
    json.work_experience work_experience 
    end 
end 

,並使用它:

<!-- somewhere in view, just for example --> 
<div ng-init="user = <%= @user.display_to_json %>"></div> 

注意:類名是Jbuilder,不JBuilder

+0

正在尋找這個無處不在,謝謝! –

0

在控制器I使用

渲染JSON:無論

實施例:

  1. items_controller.rb(順便說一句我使用的MongoDB):
def show 
    render json: @item 
end 
  • http://localhost:3000/items/他回答我的JSON: enter image description here
  • 我沒有使用過任何意見

    0
    json = ActionController::Base.new.view_context.render(partial: "api/v1/users/user", locals: {user: @user}) 
    
    相關問題