2013-07-23 55 views
0

我想基於變量運行某些私人控制的方法,即:Rails的:基於運行私人控制方法變量

def new 
    @doc = Doc.new 
    #see private methods 
    @template.name.parameterize.underscore 
    respond_to do |format| 
    format.html 
    end 
end 

@template.name.parameterize.underscore將在私有方法的確切名稱同一個控制器。那可能嗎?如果不是,有沒有辦法實現這一目標?

UPDATE

使用此代碼來代替:

template = @template.name.parameterize.underscore.to_sym 
@doc.send template 

給了我一個NoMethodError:undefined method 'newsletter' for #<Doc:blah>即使我已經在控制器稱爲newsletter的私有方法。

+0

http://ruby-doc.org/core-2.0/Object.html#method-i-send –

+0

這對控制器方法有效嗎?對於通過'send'傳遞的所有內容,我得到一個NoMethodError。 –

+0

它適用於所有事情 - 所有的Ruby方法調用都只是消息,發送可以讓您發送任意消息。你確定你打電話發送正確的對象? –

回答

1

您可以使用send方法發送任意消息。

由於您想從控制器向您的控制器發送消息,您可以使用send template來調用存儲在template變量中的方法。