如何修改用户输入?

时间:2013-09-13 08:04:00

标签: ruby-on-rails ruby ruby-on-rails-3

我写了一个小的演示代码,向您展示我的问题:

puts "Enter your feeling"
a = gets.chomp
@feel = "good"
puts a

所以当涉及到输入时,我输入:

Actually i fell very #{@feel}

然后我希望得到这个输出:

 Actually i fell very good

但我得到了这个输出:

 Actually i fell very #{@feel}

我做错了什么?

4 个答案:

答案 0 :(得分:0)

而不是

puts a

应该是

puts "Actually i feel very " + @feel

答案 1 :(得分:0)

  

“#{@感觉}”

可能是您需要的感觉

并尝试遵循命名约定。

答案 2 :(得分:0)

简单的答案是你不能。

插值发生在运行时,所以即使你可以让它工作,@ ifel在你输入时也是零。

你会做得更好:

puts "Enter your feeling"
a = gets.chomp
@feel = "good"
puts a.gsub("##feel##",@feel)

然后问你感觉如何进入:

   Actually I feel very ##feel##

答案 3 :(得分:0)

老实说,从用户插入任意字符串并不太安全。基本上它与使用Kernel#eval(在您的情况下将起作用)相同......用户可以放置他们想要的任何内容,并且非常容易滥用和破坏您的系统。你可以通过简单地在他们输入的内容中过滤引号来做一点技巧,但老实说这是一个糟糕的选择。

如果#{@feel}是您允许他们插入的唯一内容,那么您可以使用@feel@feel进行字符串替换:

puts a.gsub('#{@feel}',@feel)