当你不知道你要求什么时,如何添加标题?

时间:2014-03-10 05:19:12

标签: ruby-on-rails ruby base64 carrierwave

我真的不知道如何询问我要求的东西......如果我知道我在寻找什么,我会谷歌!

所以,我有一组载波版本的图像名称image00,image01,image02等,直到image25存储为:

@photo.main.image00@photo.main.image01等......

我希望能够使用控制器发布这些图像。但我不知道如何将请求串起来。我有Objective-c,javascript,Ruby和许多其他语言在我脑海中争夺空间,Ruby似乎已经输掉了!

我希望能够拨打电话,例如:

@photopiece = Base64.strict_encode64(File.read(@photos.main.imageXX.current_path))

但不知道如何用数字替换XX并仍然编码文件。

我试过了:

imagestring = "@photos.main.image#{sendPiece}.current_path"

然后

@photopiece = Base64.strict_encode(File.read(imagestring))

但那没有做任何事......我几乎听不到编辑器在嘲笑我(这就是我现在的偏执狂!)

那么,我如何让照片名称出现在表格中:

@photos.main.imageXX.current_path

这样他们可以通过strict_encode解析吗?

提前感谢您的帮助!读我的随意......

PS。为真正糟糕的标题道歉!如果你知道我要求的东西,请改变它!

2 个答案:

答案 0 :(得分:1)

您可以使用public_send

piece = @photos.main.public_send("image#{sendPiece}")
@photopiece = Base64.strict_encode64(File.read(piece.current_path))

答案 1 :(得分:0)

也许,它比愚蠢的eval(params ..)更安全:

 number_is_safe = !!Float(sendPiece) rescue false
 if number_is_safe
   path = eval "@photos.main.image#{sendPiece}.current_path"
   @photopiece = Base64.strict_encode(File.read(path))
 end

jvnill提出了更好的解决方案:

piece = @photos.main.public_send("image#{sendPiece}")
@photopiece = Base64.strict_encode64(File.read(piece.current_path))