Ruby on rails 3 Draper:如何将装饰模型的所有允许属性和公共方法转换为json

Ruby on rails 3 Draper:如何将装饰模型的所有允许属性和公共方法转换为json,ruby-on-rails-3,json,backbone.js,draper,hamlc,Ruby On Rails 3,Json,Backbone.js,Draper,Hamlc,我正在寻找一种将装饰模型转换为json的简单方法,以便在客户端模板中使用。我想找到一个解决方案,其中装饰模型的所有允许属性和公共方法都将保留在json中 目前我有带rails后端的主干RIA。我正在使用haml_coffee_资产gem进行客户端模板。Draper是为我的用户模型提供装饰的 class ContactDecorator < Draper::Base include Draper::LazyHelpers decorates :user allows :lo

我正在寻找一种将装饰模型转换为json的简单方法,以便在客户端模板中使用。我想找到一个解决方案,其中装饰模型的所有允许属性和公共方法都将保留在json中

目前我有带rails后端的主干RIA。我正在使用haml_coffee_资产gem进行客户端模板。Draper是为我的用户模型提供装饰的

class ContactDecorator < Draper::Base

  include Draper::LazyHelpers

  decorates :user

  allows :login, :id, :total_unread, :total_messages

  def for_json
    {
        :new_messages => new_messages,
        :avatar_link => avatar_link,
        :login_name_link => login_name_link,
        :id => model.id,
        :name => model.login,
        :avatar => model.avatar.url(:small),
        :humanized_messages_number =>
    }
  end

  def  humanized_messages_number
    pluralize(user['total_messages'], t("share_my_trip.messages.Message"), t("share_my_trip.messages.Messages")) + " #{new_messages}"
  end

  def new_messages
    model['total_unread'].to_i > 0 ? "(#{model['total_unread'].to_i} #{t("share_my_trip.messages.new")})" : ''
  end

  def avatar_link
    link_to(image_tag(model.avatar.url(:small), :size => "32x32", :onerror => "this.src='/avatars/original/missing.png'"), share_my_trip_user_path(:id => model.login), :id => "user-nick-#{model.id}", :class => "author")
  end

  def login_name_link
    link_to(model.login, share_my_trip_user_path(:id => model.login), :id => "user-nick-#{model.id}", :class => "author")
  end

end
在我看来,我只是在初始化主干应用程序:

:javascript
  App.init({dialogs: #{@dialogs.to_json}})

有没有办法删除丑陋的#for_json decorator方法?

您找到其他可能的解决方案了吗?
:javascript
  App.init({dialogs: #{@dialogs.to_json}})