2013-11-23 162 views
0

这是我第一次在Rails中使用json。在从病人控制器搜索行动,我定义::姓名,姓氏:姓名

 format.json { render json: @patients} 

所以现在这个资源给了我这样的输出:

[{"id":73551,"typ":null,"name":"Beck","forname":"Ana","birthday":"1945-06-14","titel":"",department_id":2,"tot":null}, 

我想传至输出更改为类似:

[{"id":73551,"fullname":"Beck, Ana"},{... 

我该怎么做?谢谢!

更新!现在我有:

.... 
     respond_to do |format| 
     format.html {} 
     format.json { render json: as_json(@patients)} 
     end 
    end 

    def as_json(options={}) 
    { 
     :id => self.id, 
     :fullname => self.name + ", " + self.forname 
    } 
    end 

但不知何故,我得到的错误

未定义的方法'身份证”为#

+1

您是否试过'@ patients.select([:id,:fullname])'? –

+0

哦,非常好!谢谢!唯一的问题是,我没有dataname'fullname',但'forname'和'name'应该连接到'fullname = name,forname'。也许你可以把它作为asnwer发布?谢谢 –

+0

您需要将'as_json'方法放入您的'Patient'模型中。不在你的控制器中。 –

回答

1

select条款应做的工作:@patients.select([:id, :fullname, :whateveryouneed])


对于第二个问题,您可能会考虑overidding Patient.as_json方法:

def as_json(options={}) 
    { 
     :id => self.id, 
     :fullname => self.name + ", " + self.forname 
    } 
end 
+0

但是全名应该包含':name,forename'!对不起 –

+0

我试过像你说的话!你可以在更新中看到它!但它不会工作!我错了什么?谢谢 –

+0

也许虚拟属性是一个好主意? –