ruby-on-rails - Rails 助手中的动态方法调用

标签 ruby-on-rails ruby

我有一个辅助模块,其中包含一系列采用以下格式的方法调用

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/

相关文章:

ruby-on-rails - Microsoft Translator API 回答 500 内部服务器错误

ruby-on-rails - Rails,validates_format_of - 最少 4 个字母字符

javascript - rails : Update view multiple times in 1 action

Ruby 错误处理 : Rescuing Exceptions in Subclasses

Ruby:选择一组数组索引,其元素通过测试

ruby-on-rails - 更改连接 search_paths 的线程安全方式

javascript - 在 Ruby on Rails 中将 Select Option 表单与 If 语句结合使用

ruby - 如何使用 Groovy 将字段动态添加到 Java 类?

ruby-on-rails - has_many autosave_associated_records_for_*

ruby - ruby-qml 的先决条件是什么?