如何在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

现在,我想使其在应用程序中起作用,但是我不知道如何创建该方法?我希望它仅在视图/显示中显示

= @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)但未成功的操作。

安德烈·德尼科(Andrey Deineko)

是的,该方法可以保留在模型中。

简短的一个:

@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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章