2010-05-20 60 views
2

是否有將params傳遞給混合方法的最佳實踐方法?Ruby混合和實例變量

使用mixin的類可以設置混入方法期望的實例變量,或者它可以將所有必需的參數作爲參數傳遞給混入方法。

背景是,我們有一個Rails控制器,它發佈的內容 - 但其他控制器,甚至模型需要能夠「充當發佈者」,所以我將控制器方法分解成一個模塊,我根據需要混合。

在此,例如,是從Rails控制器代碼需要「充當出版者」和它調用一個混合入方法question_xhtml()...

def preview 
    @person = Person.find params[:id] 
    @group = Group.find params[:parent_id] 
    @div = Division.find params[:div_id] 
    @format = 'xhtml' 
    @current_login = current_login 
    xhtml = person_xhtml() # CALL TO MIXED-IN METHOD 
    render :layout => false 
end 

最終question_xhtml需要所有的東西!這種做法是否合理,還是會更好呢?

def preview 
    person = Person.find params[:id] 
    group = Group.find params[:parent_id] 
    div = Division.find params[:div_id] 
    format = 'xhtml' 
    xhtml = person_xhtml(person, group, div, format) # CALL TO MIXED-IN METHOD 
    render :layout => false 
end 

......還是別的什麼?

+0

你能給出一個混合方法和他們需要的參數的例子嗎? – mikej 2010-05-20 16:42:41

回答

0

我想你應該能夠做到:

module ActAsPublisher 
    def person_xhtml 
    do_stuff_with(@person, @group, @div, @format, @current_login) 
    # eg. use instance variable directly in the module 
    end 
end 

class WhateverController < Application Controller 
    act_as_publisher 
    ... 
end 

,如果你使用的腳本/生成插件act_as_publisher。

+0

謝謝,但我的問題的目的是爲了理解插件將使用的設置實例變量與插件方法的顯式傳遞參數之間的更好方法(如果有的話)。 – Harv 2010-05-20 20:52:24