2016-09-13 4 views
0

У меня есть простое приложение (серверная сторона - Sinatra, клиентская сторона - ReactJS).Sinatra и маршрутизация на стороне клиента

Рабочий процесс очень прост: Sinatra обрабатывает get "/" и отправляет index.html клиенту со статическими таблицами стилей и скриптами.

Сценарии - это приложение ReactJS, которое состоит из нескольких компонентов и ReactRouter. Каждый компонент React представляет собой отдельную «страницу» с собственным маршрутом/маршрутом в терминах ReactRouter.

Например:

  • "/" => "index.html" (real html page with renered components inside),
  • "/form" => (ReactRouter points to component <Form/>, in fact render happens inside selector of "index.html"),
  • "/finish" => (ReactRouter points to component <Finish/>, in fact render happens inside selector of "index.html").

Пока я осуществлял только клиентскую сторону, он работал очень хорошо. Но теперь, когда я пытаюсь использовать Sinatra для серверной части, это сломано: когда я хочу перейти на /form, я получаю страницу 404 Sinatra по умолчанию («Sinatra не знает эту мелодию»).

Я понимаю, что Sinatra (или Rack) перехватывает маршрут запроса (/form of /finish) перед ReactRouter. Но я не могу понять, как это исправить (и почему это так, в то время как скрипт маршрутизатора уже находится на клиенте и должен срабатывать первым).

Благодарим за помощь.

ответ

1

Используйте шаблон подстановочного знака для возврата index.html на весь маршрут.

Что-то вроде этого:

get '/*' do 
    #return index.html 
end 
+0

Спасибо! Позор мне, это было довольно очевидно) – RedZagogulin

Смежные вопросы