我acts_as_api的創造者。我用一個最小的Rails應用程序試用了你的用例,它爲我工作。下面是在XML實例響應:
<users type="array">
<user>
<first-name>Me</first-name>
<recieved-date type="datetime">2011-10-07T08:20:02Z</recieved-date>
</user>
<user>
<first-name>Me2</first-name>
<actual-date type="datetime">2011-10-07T08:20:52Z</actual-date>
</user>
</users>
模型的API模板看起來是這樣的:
api_accessible :test_dates do |t|
t.add :first_name
t.add :common_date, :as => :recieved_date, :if => lambda{|u|u.date_type_code=="RECVD"}
t.add :common_date, :as => :actual_date, :if => lambda{|u|u.date_type_code=="ARRIV"}
end
這是User.all的轉儲:
[
[0] #<User:0x0000010b859308> {
:id => 1,
:first_name => "Me",
:last_name => "Too",
:age => nil,
:active => nil,
:created_at => Fri, 07 Oct 2011 08:20:19 UTC +00:00,
:updated_at => Fri, 07 Oct 2011 08:20:19 UTC +00:00,
:date_type_code => "RECVD",
:common_date => Fri, 07 Oct 2011 08:20:02 UTC +00:00
},
[1] #<User:0x0000010b858688> {
:id => 2,
:first_name => "Me2",
:last_name => "Too2",
:age => nil,
:active => nil,
:created_at => Fri, 07 Oct 2011 08:20:45 UTC +00:00,
:updated_at => Fri, 07 Oct 2011 08:20:53 UTC +00:00,
:date_type_code => "ARRIV",
:common_date => Fri, 07 Oct 2011 08:20:52 UTC +00:00
}
]
難道你檢查你是否正確使用了控制器助手?
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.xml { render_for_api :test_dates, :xml => @users, :root => :users }
format.json { render_for_api :test_dates, :json => @users, :root => :users }
end
end
我希望這會有所幫助。 :)
進一步的調試可能包括: *如果刪除:if選項會發生什麼情況? *如果你把它放在:if選項塊中,'puts u.date_type_code'是什麼意思?
「提取」是指「加載」還是「返回」?你有沒有檢查你的條件是否真的實現了?您是否嘗試過返回其他字段以查看它是否返回任何內容? – polarblau
@polarblau,我的意思是回報。除日期API外,所有其他字段都會返回。我在這裏粘貼的是acts_as_api回覆的一部分。我有其他約11個模型使用相同的acts_as_api響應。他們都得到了答覆。只有來自日期的api不會獲取結果。 –