1
我們爲我們的位置模型提供了自定義操作(:註冊)。支持代碼與標準:更新非常相似。由於inherited_resources爲我們提供了一個「模板」,我們從actions.rb複製了更新代碼,將'update_attributes'更改爲'register',並且Flash消息反映了不同的操作。 這並不覺得非常乾燥。我們想利用:改爲更新。有任何想法嗎?我們可以以DRY方式使用帶有inherited_resources的自定義操作嗎?
class LocationsController < InheritedResources::Base
def register(options={}, &block)
#TODO: copied update from actions.rb. I expect there is a better way.
# All I changed was the flash message (to reflect the action)
# and the method call on the object (update_attributes -> register)
object = resource
if object.register
set_flash_message!(:notice, '{{resource_name}} was successfully registered.')
options[:location] ||= resource_url rescue nil
respond_with_dual_blocks(object, options, true, block)
else
set_flash_message!(:error)
respond_with_dual_blocks(object, options, false, block)
end
end
櫃面任何人仍在尋找這樣的:在繼承的資源的1.3版本,傳遞給update_resource第二個參數是現在一個數組。我必須使用update_resource中的屬性[0]才能獲得與以前相同的行爲。鑑於此更改,最好不要覆蓋update_resource。 – 2012-09-20 01:19:02