我正在创建一个应用程序,用户可以输入其名称,该名称将作为化学符号返回(匹配时)。
所以我设法在控制台中做到了:
symbols = {
"ac" => "Ac",
"al" => "Al",
"am" => "Al",
"br" => "Br",
"ba" => "Ba",
"cr" => "Cr"
}
puts "Get your chemical name!"
name = gets.chomp
name.gsub!(/#{symbols.keys.join('|')}/, symbols)
puts name
现在,我想使其在应用程序中起作用,但是我不知道如何创建该方法?我希望它仅在视图/显示中显示
= @convertor.name
= link_to 'Edit', edit_convertor_path(@convertor)
= link_to 'Back', convertors_path
我应该在模型中创建方法,还是在其他地方?
class Convertor < ActiveRecord::Base
def get_chemical_name(name)
symbols = {
"ac" => "Ac",
"al" => "Al",
"am" => "Al",
"br" => "Br",
"ba" => "Ba",
"cr" => "Cr"
}
name.gsub!(/#{symbols.keys.join('|')}/, symbols)
puts name
end
end
因此,在我看来,我尝试了类似[email protected]_chemical(name)
但未成功的操作。
是的,该方法可以保留在模型中。
简短的一个:
@convertor.get_chemical(@convertor.name)
会起作用,但这不是正确的方法。
正确的方法是将Convertor
类中的方法更改为不接受任何参数,因为它是实例方法,并且已经可以访问name
属性。因此,更改方法签名后
def get_chemical_name
symbols = {
"ac" => "Ac",
"al" => "Al",
"am" => "Al",
"br" => "Br",
"ba" => "Ba",
"cr" => "Cr"
}
name.gsub!(/#{symbols.keys.join('|')}/, symbols)
end
您将能够使用
[email protected]_chemical_name
另外,我puts name
从方法定义中删除了无用的东西-在Ruby中,最后一条求值的行已经是方法的返回值(除非return
在方法结束之前进行编辑)。
同样,如果有机会symbols
在其他任何地方使用哈希,则可以将其移动到常量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句