Ich habe ein Ruby-Programm, das eine Datei liest und eine bestimmte Ausgabe zurückgibt. Ich muss jetzt eine Web-App dieses Programms mit Sinatra erstellen. Ich habe eine form
mit allen Dateioptionen erstellt und möchte nun den Ruby-Code mit der ausgewählten Datei aus dem Formular ausführen, nachdem die Schaltfläche zum Senden gedrückt wurde.Ruby-Datei von HTML-Formular ausführen senden
Grundsätzlich bin ich nicht sicher, wie dieses externe Ruby-Programm mit dem Dateinamen ausgeführt werden soll, der vom Benutzer aus dem HTML form
ausgewählt wurde. Das Ruby-Programm (example.rb
) beginnt mit der Definition 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>
Ich habe <% = rsg (params [: grammar_file])%> in home.erb aber das Drucken auf der Konsole und nicht die Seite – msc
setzen es in der Post-Methode wie RSG (params [: grammar_file]) auch druckt in der Konsole ... nicht sicher warum – msc
alles? Ich bin seit Stunden festgefahren – msc