我有一個Ruby程序讀取文件並返回特定的輸出。我必須現在使用Sinatra創建此程序的Web應用程序。我創建了一個包含所有文件選項的form
,並且現在我想要在按下提交按鈕後從表單中選擇該文件來運行該Ruby代碼。從HTML表單運行Ruby文件提交
基本上,我不知道如何讓這個外部Ruby程序運行時,用戶從HTML form
中選擇的文件名。
Ruby程序(example.rb
)以定義def read_grammar_defs(filename)
開頭。
// sinatra_main.rb
require 'sinatra'
require 'sinatra/reloader' if development? #gem install sinatra-contrib
require './rsg.rb'
get '/' do
erb :home
end
post '/p' do
//call program to read file with the parameter from form
end
// layout.erb
<!doctype html>
<html lang="en">
<head>
<title><%= @title || "RSG" %></title>
<meta charset="UTF8">
</head>
<body>
<h1>RubyRSG Demo</h1>
<p>Select grammar file to create randomly generated sentence</p>
<form action="/p" method="post">
<select name="grammar_file">
<option value="Select" hidden>Select</option>
<option value="Poem">Poem</option>
<option value="Insult">Insult</option>
<option value="Extension-request">Extension-request</option>
<option value="Bond-movie">Bond-movie</option>
</select>
<br><br>
</form>
<button type="submit">submit</button>
<section>
<%= yield %>
</section>
</body>
</html>
我在home.erb中有<%= rsg(params [:grammar_file])%>,但是它打印到控制檯而不是頁面 – msc
將它放在post方法中,如rsg(params [:grammar_file])也打印在控制檯...不知道爲什麼 – msc
什麼?我被卡住了幾小時 – msc