我有一个辅助模块,其中包含一系列采用以下格式的方法调用
def link_to_details_for_facebook(param1, param2)
def link_to_details_for_twitter(param1, param2)
def link_to_content_for_facebook(param1, param2)
def link_to_content_for_twitter(param1, param2)
有没有一种方法可以调用一个方法,例如,这样我就可以动态调用正确的辅助方法?
def link_to_type_for_social_network(param1, param2, type="details", social_network="facebook")
method("#{type}_url_to_#{social_network}(param1, param2)".to_sym).call
end
这只是给了我错误
undefined method
details_to_facebook(param1, param2)' for class
ActionView::Base'
最佳答案
我不熟悉 method() 方法,但我自己会使用 send()
。由于您定义的方法名称以“link_to...”开头,因此您需要确保将其添加到方法调用中。我会选择这样的东西:
def link_to_type_for_social_network(param1, param2, type="details", social_network="facebook")
send("link_to_#{type}_for_#{social_network}", param1, param2)
end
关于ruby-on-rails - Rails 助手中的动态方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3285836/