尝试使用sinatra表单输入

时间:2016-03-14 03:30:17

标签: ruby sinatra

我希望使用sinatra在本地文件路径上创建一个目录。为此,我需要使用表单输入字段来选择要调用目录的名称。

这是我到目前为止所做的,遗憾的是我发现的一切都没有明确说明如何将输入值传递给类方法。

我是谷歌搜索6小时,感谢帮助。
app.rb

require 'sinatra'
require 'shotgun'
require 'fileutils'

class Hello
  def make_folder
    FileUtils.mkdir_p "/Users/aronlilland/Documents/ruby/" + name_of_directory
  end
end

get '/' do
  erb :form
end

post '/' do
  # what do i put here to capture the name of the directory the user inputs?
end

form.erb

# what do I put here to link the input value with app.rb?

<form action="/form" method="post">
  <input type="text" name="name_of_directory">
  <input type="submit">
</form>

1 个答案:

答案 0 :(得分:0)

从表单上的HTML中,您已设置action='/form' method='post'。 这意味着您需要制作post '/form'路线。

在那条路线中你可以说

FileUtils.mkdir_p "/Users/aronlilland/Documents/ruby/" + params[:name_of_directory]

由于表单输入有name='name_of_directory',因此它成为params散列中的键。

顺便说一句,将值传递给类方法很简单,只需在方法中添加一个参数

即可
class Example
  def self.class_method(parameter)
    puts parameter
  end
  def instance_method(parameter)
    puts parameter
  end
end