Lui*_*aca 3 ruby ruby-on-rails
我有字符串"001-1776591-7",我想把它分成3个部分,"-"作为split参数.
我已经创建了两个方法,第一个和最后一个,但是字符串的第二部分,我怎么能得到它?
更多信息:
我在我的类中创建了两个方法,但在加载视图时出现错误,详情如下:
def serie
@serie || cedula.to_s.split('-').[0] : @serie
end
def identificador
@identificador || cedula.to_s.split('-').[1] : @identificador
end
def verificador
@verificador || cedula.to_s.split('-').[2] : @verificador
end
SyntaxError in TecnicosController#index
/home/lurraca/Desktop/rails_project/ArLink/app/models/tecnico.rb:7: syntax error, unexpected '['
@serie || cedula.to_s.split('-').[0] : @serie
^
/home/lurraca/Desktop/rails_project/ArLink/app/models/tecnico.rb:11: syntax error, unexpected '['
...dor || cedula.to_s.split('-').[1] : @identificador
... ^
/home/lurraca/Desktop/rails_project/ArLink/app/models/tecnico.rb:15: syntax error, unexpected '['
@verificador || cedula.to_s.split('-').[2] : @verificador
Run Code Online (Sandbox Code Playgroud)
该split方法返回一个数组,因此您可以像获取任何其他数组的第二个元素一样访问它的第二个元素:array[1].此外,使用||栏可以使您的代码更简单.试试这个:
def serie
@serie || cedula.to_s.split('-')[0]
end
def banana
@banana || cedula.to_s.split('-')[1]
end
def verificador
@verificador || cedula.to_s.split('-')[2]
end
Run Code Online (Sandbox Code Playgroud)
为什么不立刻设置它们?
@serie, @identificador, @verificador = cedula.split('-')
Run Code Online (Sandbox Code Playgroud)
您可以通过attr_accessor或者attr_reader如果您仍想通过方法访问它们来创建属性.