Ruby on rails 如何使用字符串插值创建动态方法?

Ruby on rails 如何使用字符串插值创建动态方法?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我有以下代码,但无法运行: %w(acp bcp ccp tcp).each do |kind| define_method(kind+"_name") { send "[#{kind}_title ? #{kind}_title.title : '',#{kind}_firstname,#{kind}_lastname].join(' ')" } end 运行时: > Form.last.acp_name NoMethodError: undefined method `[a

我有以下代码,但无法运行:

%w(acp bcp ccp tcp).each do |kind|
    define_method(kind+"_name") { send "[#{kind}_title ? #{kind}_title.title : '',#{kind}_firstname,#{kind}_lastname].join(' ')" }
 end
运行时:

> Form.last.acp_name
NoMethodError: undefined method `[acp_title ? acp_title.title : '',acp_firstname,acp_lastname].join(' ')' for #<Form:0x108daabe8>
>Form.last.acp\u名称
命名错误:未定义的方法“[acp\U title?acp\U title.title:”,acp\U名字,acp\U姓氏]。的联接(“”)”#
有人知道如何修复它,使其以代码而不是文字的形式运行吗


提前感谢…

重构意味着在不改变代码行为的情况下简化代码。修复bug并不是重构,因为不运行的代码和行为不同的代码。谢谢,这句话说得对,问题改进了!重构意味着简化代码而不改变其行为。修复bug并不是重构,因为不运行的代码和行为不同的代码。谢谢,这句话说得对,问题改进了!
%w(acp bcp ccp tcp).each do |kind|
  define_method("#{ kind }_name") do
    title = send("#{ kind }_title") || ''
    array = [ title, send("#{ kind }_firstname"), send("#{ kind }_lastname")]
    array.join(' ')
  end
end