想象一下,一個Rails項目根據它們的名字查找動物名稱。該Rails應用程序由執行實際查找的外部服務提供支持。該服務基於密鑰返回結果。例如,如果我向[GET]/animal?name = benji這樣的外部API請求,我會返回類似{「type」:「dog」,「legs」:「4」,「tail-length 「:」短「」領「:」藍「}。然而,如果我傳入...?name = flipper到動物終點,我會回到{「type」:「dolphin」,「color」:「gray」,「food」:「fish」}。 (數據以實際的JSON或XML格式返回,我只是在這裏用僞代碼來表達這一點)導軌和工廠模式
我的第一個問題是這個......鑑於返回調用的屬性根據在將一個響應(由於缺少一個更好的術語)解組爲一個「模型」對象時,是否傳入,是否有意義地實現某種類型的工廠模式(由Russ Olsen的第13章的Ruby中的ala Design Patterns)來創建對象一個合適的班級?還有其他方法是否合理?
我的下一個問題是這樣的,可以說我想顯示一個網頁上的所有動物列表(使用ERB模板)。是否有意義創建不同的部分模板(例如_dolphin.html.erb和_dog .html.erb),然後在主列表視圖中放置一個案例,該列表視圖可以將每個列表項目渲染爲適當的模板。
例如:
list.html.erb ...
<ul>
<% for animal in @animals.each %>
<li>
<% if animal.type == 'dog' %>
<%= render :partial => 'dog', :locals => {:animal => animal} %>
<% elsif item.type == 'dolphin' %>
<%= render :partial => 'dolphin', :locals => {:animal => animal} %>
<% else %>
<%= render :partial => 'generic_animal', :locals => {:animal => animal} %>
<% end %>
</li>
<% end %>
</ul>
(這裏animal.type == '狗' 是故意的,我不使用符號(:狗),因爲從API返回的數據是一個字符串值,它用於填充animal.type屬性。Bad,我知道。)
我正在使用的項目現在正在使用此方法。 (顯然,我已經改變了元素/域。)我想知道這是否是一種有效的方法,或者如果其他人已經處理了類似的問題以及他們如何去做。
謝謝!
謝謝,本傑明。在我的例子中,我正在使用動物。實際的應用程序可能更像是「動物」,而「realestate」是兩個不同的返回對象,並且視圖完全不同。感謝您的反饋! – 2013-03-01 18:07:02