Bu dizenin sonuna bir '/' eklemeyi deniyorum. Bunu yapmanın en iyi yolu nedir?Ruby'de bir dize ekleme
>> params[:id]
"shirts"
params[:id] == "shirts/"
yapmak istiyorum. Bu dizenin sonuna nasıl /
ekleyebilirim? Bunun gibi
Bu dizenin sonuna bir '/' eklemeyi deniyorum. Bunu yapmanın en iyi yolu nedir?Ruby'de bir dize ekleme
>> params[:id]
"shirts"
params[:id] == "shirts/"
yapmak istiyorum. Bu dizenin sonuna nasıl /
ekleyebilirim? Bunun gibi
En basit:
params[:id] = params[:id] + '/'
veya
params[:id] += '/'
Moar fantezi:
params[:id] << '/'
Yine başka bir yol Bunu yapmanın:
params[:id].concat '/'
Eğer gerçekten bizzare nedense gsub ısrar ederse:
params[:id].gsub! /$/, '/'
:
params[:id] + '/' == 'shirts/'
gerekmez gsub :)
Sürece bazı durumlarda bir Sondaki eğik çizgi olabilir. Sonra kullanın:
params[:id] = params[:id] + '/' unless params[:id].match(/.*\/$/)
params[:id] == 'shirts/'
Kürek operatörü?
params[:id] << "/"
params[:id] << "/"
çalışmalı.
Bu şekilde bir URL oluşturmaya çalışıyorsanız, muhtemelen yanlış yapıyorsunuz, ancak size doğru yolu söyleyemem.
Bir dizin yolu bu şekilde oluşturmaya çalışıyorsanız ve yol için başka bitler varsa, File.join
gibi bir şey kullanın. Link to the documentation
"En iyi" kullanımı durumda büyük ölçüde bağlıdır ama şu kodu göz önünde bulundurun:
a = 'shirts'
b = a
params = {}
params[:id] = b
params[:id] << '/'
params[:id] #=> "shirts/"
Beklendiği gibi, <<
bir çizgi ama ... eklemiştir
a #=> "shirts/"
# a has changed too!
Yani Bu yöntemlerle anlayış düzeyinize bağlı olarak, beklemeyeceğiniz bir davranış budur. Karşılaştırma:
params[:id] += '/'
params[:id] #=> "shirts/"
a #=> "shirts"
# a remains the same
Temel olarak, bazı yöntemler yeni nesneler oluşturur ve diğerleri mevcut olanları değiştirir. Bunu object_id yöntemiyle test edebiliriz.
str1 = 'a'
str2 = str1
str1.object_id #=> 14310680
str2.object_id #=> 14310680
# Both str1 and str2 point to the same object
Şimdi
str1 << 'b' #=> "ab"
str1.object_id #=> 14310680
str2 #=> "ab"
başarıyla yeni bir nesne yaratmadan ve str2 hala aynı nesneye aynı zamanda "güncelleme" alır işaret beri str1 modifiye ettik. Son olarak, eğer biz +=
yöntemi kullanmak: Biz STR1 bir şey eklemiş
str1 #=> "ab"
str1 += '' #=> "ab"
str1.object_id #=> 15078280
str2.object_id #=> 14310680
Bildirimi ama yine de yeni bir nesne oluşturur.