Rails方法JSON渲染

时间:2012-04-18 19:42:01

标签: ruby-on-rails json

我在rails应用程序中有一个listing_controller以及一个Listing模型。 数据库由列表组成,每个列表都有名称,纬度,经度等。

我的listing_controller中有一个方法,在调用时应该向调用者返回一个JSON对象。

JSON对象应该从相应的列表模型中获取其数据。但是,我希望JSON对象只包含每个列表的名称,纬度,经度而不包含模型的其他属性。我该如何限制?

现在,当方法返回JSON对象时,它包含每个列表的所有属性。

以下是当前的实施:

def list  
@listings = Listing.order(:name)  
render :text=>(@listings).to_json()  

结束

3 个答案:

答案 0 :(得分:1)

如何替换:

@listings = Listing.order(:name)  

使用:

@listings = Listing.order(:name).select([:name, :latitude, :longitude])

答案 1 :(得分:0)

我建议查看rabl宝石。它是一个模板系统,可以轻松灵活地生成json(等等)。

还有一个免费的railscast

答案 2 :(得分:0)

您可以查看active_model_serializers gem。

如果你不想要这一切,你可以手动创建一个哈希:

render :text => {name: @listing.name, lat:@listing.lat, long:@listing.long}.to_json