如何在rails 4中转换用户输入?
我正在创建一个应用程序,用户可以在其中输入将作为化学符号返回的名称(匹配时)。
所以我设法在控制台中做了:
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
现在我想让它在应用程序中工作,但我不知道如何创建该方法? 我希望它只在views / show中显示
= @convertor.name = link_to 'Edit', edit_convertor_path(@convertor) = link_to 'Back', convertors_path
我应该在我的模型中创建方法还是在哪里?
class Convertor "Ac", "al" => "Al", "am" => "Al", "br" => "Br", "ba" => "Ba", "cr" => "Cr" } name.gsub!(/#{symbols.keys.join('|')}/, symbols) puts name end end
所以在我看来showI尝试了类似=@convertor.get_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
你将能够使用
=@convertor.get_chemical_name
此外,我从方法定义中删除了无用的puts name
– 在Ruby中,最后一个评估的行已经是方法的返回值(除非在方法结束之前return
ed)。
此外,如果您在任何其他地方使用symbols
哈希,您可以将其移动到常量。