Я создаю простое приложение Sinatra, которое позволяет пользователям вводить URL-адреса через форму, и после отправки приложение откроет каждый из этих URL-адресов в новой таблице (аналогично urlopener.com)

Мой файл app.rb

require 'sinatra'

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

post '/' do
    urls = params[:urls]
end

Мой файл View

<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-адреса консоли в post action, но не знаю, как выполнить перенаправление обратно на index и отобразить каждый из URL-адресов, прежде чем открывать их в новых вкладках (что я планирую используя JS для выполнения).

1
Yogzzz 19 Мар 2014 в 02:52

1 ответ

Лучший ответ

Вам не нужно перенаправлять обратно на исходную страницу (на самом деле URL-адрес не изменился, поэтому перенаправление не имеет смысла). Вместо этого вы визуализируете тот же шаблон . Просто вставьте erb :'index.html' также во второй блок (post '/') и поместите URL-адреса в переменную класса , чтобы они были доступны для шаблона:

@urls=params[:urls].split

(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...
2
Felixyz 19 Мар 2014 в 03:55