Ruby Sinatra重定向以显示参数

Ruby Sinatra重定向以显示参数,ruby,sinatra,Ruby,Sinatra,我正在构建一个简单的Sinatra应用程序,允许用户通过表单输入URL,一旦提交,该应用程序将在新表中打开每个URL(类似于) 我的app.rb文件 require 'sinatra' get '/' do erb :'index.html' end post '/' do urls = params[:urls] end <h1>Enter URLs Below </h1> <form action="/" method="post">

我正在构建一个简单的Sinatra应用程序,允许用户通过表单输入URL,一旦提交,该应用程序将在新表中打开每个URL(类似于)

我的
app.rb
文件

require 'sinatra'

get '/' do
    erb :'index.html'
end

post '/' do
    urls = params[:urls]
end
<h1>Enter URLs Below </h1>
<form action="/" method="post">
<textarea rows="40" cols="50" id="urls" name="urls" ></textarea>
<br/>
<input type= "submit" value="Open 'em up!">
</form>
我的
视图
文件

require 'sinatra'

get '/' do
    erb :'index.html'
end

post '/' do
    urls = params[:urls]
end
<h1>Enter URLs Below </h1>
<form action="/" method="post">
<textarea rows="40" cols="50" id="urls" name="urls" ></textarea>
<br/>
<input type= "submit" value="Open 'em up!">
</form>
在下面输入URL


我能够将URL打印到
post action
中的控制台,但不确定如何重定向回
索引,并在新选项卡中打开每个URL之前显示它们(我计划使用JS)

您不必重定向回原始页面(事实上,URL没有更改,因此重定向没有意义)。而是渲染相同的模板。只需在第二个块(
post'/'
)中插入
erb:'index.html'
),并将URL放入类变量中,以便模板可以使用它们:

@urls=params[:urls].split
(存在
拆分
,因此可以获得字符串数组,而不是一个带换行符的长字符串。)

最后,向模板添加一些逻辑,以检查是否有任何URL要显示,如果有,则将其呈现为列表:

<% if @urls && !@urls.empty? %>
  <h1>URLs</h1>
  <ul>
  <% for @url in @urls %>
    <li>
      <%= @url %>
    </li>
  <% end %>
  </ul>
<% end %>

<h1>Enter URLs Below </h1> 
...etc...

网址
在下面输入URL 等