具有获取命令行支持的Ruby内联存储

时间:2014-09-12 06:58:58

标签: ruby-on-rails ruby

新手到ruby,试图用ruby执行文件来玩ruby脚本。就像rails想要在ruby中存储一个对象,它应该显示给我。

ruby test.rb

puts "Welcome to BookDetails"
puts "1:Add"
puts "2:Delete"
puts "3:Update"
puts "4:View"
puts "5:Exist"
print "Enter your choice:"
  grade = gets.chomp
  emp = []
  i= 0 

  case grade
   when "1"
    emp[i] = Hash.new
    puts "Enter empname:"
    emp[i][:empname] = STDIN.gets
    puts "Enter emp email:"
    emp[i][:empemail] = STDIN.gets
    puts "Enter emp phno:"
    emp[i][:empphno] = STDIN.gets
    i= i +1  
    puts emp
   when "2"
    puts 'Enter the row to be deleted:'
   $delete = STDIN.gets
   when "3"
    puts 'update the row:'
   $update = STDIN.gets
   when  "4"
    puts 'view:'  
   when "5"
    puts 'exist:'
   else
    puts "You just making it up!"
   end

现在当我运行ruby test.rb时,它会执行所有操作并从命令行获取数字,但最后它会显示而不显示添加的对象。只有在给出5时它才会退出。

直到用户选择5,它不应退出界面。用户可以选择#1并添加详细信息并选择#4查看添加的详细信息。

2 个答案:

答案 0 :(得分:1)

有一些问题,

在您输入' 1'之后,没有接受额外输入的循环...该计划结束。

你可以做到

request_to_exit = false

until request_to_exit
  case grade
  ---
  when '5'
    request_to_exit = true
  else
   ...
  end
end 

另一个问题是当你做

grade = gets.chomp
  emp = []

接受grade(要执行的操作)后,您正在消灭所有员工(设置为空数组)

emp = []应该在until request_to_exit开始之前。

这应该可以帮助您在项目中取得进步。

答案 1 :(得分:1)

Ruby有一个loop方法"重复执行块"

loop do
  print "Enter your choice: "

  case gets.to_i
  when 1
    # ...
  when 2
    # ...
  when 3
    # ...
  when 4
    # ...
  when 5
    break  # <- 'break' exits the loop
  end
end