2016-04-25 3 views
2

Я пытаюсь создать JSON-сервер для Elm. Я хочу только одну страницу - elm.html, один файл js - Main.js - и один файл css.Статическая HTML-страница в Phoenix

Я пробовал following these instructions, но там не достаточно, чтобы помочь новичку, как я.

Так что теперь у меня есть router.ex

scope "/", JwtExample do 
    pipe_through :browser # Use the default browser stack 

    get "/elm", RootController, :index 
    get "/", PageController, :index 
    end 


    # Other scopes may use custom stacks. 
    scope "/api", JwtExample do 
    pipe_through :api 

    resources "/users", UserController, except: [:new, :edit] 
    end 

Этот контроллер

defmodule JwtExample.RootController do 
    use JwtExample.Web, :controller 

    plug :action 

    def index(conn, _params) do 
    redirect conn, to: "/elm.html" 
    end 
end 

И мои файлы web/static и priv/static

Но когда я по поиску в/вяз я получаю

не найдено для маршрута GET /elm.html (JwtExample.Router)

+0

См. Http://stackoverflow.com/questions/35100117/how-to-serve-static-page-in-phoenix-framework – psantos

ответ

0

ОК, так что на основе psantos не ответил, что мне нужно изменить Библиотека/endpoint.ex читать

plug Plug.Static, 
    at: "/", from: :jwt_example, gzip: false, 
    only: ~w(css fonts images js favicon.ico robots.txt elm.html) 
1

Вот решение который также загружает статическую страницу для запросов к корневому URL-адресу, т.е. е. https://myapp.test/:

вот решение, которое отображает запрос к корневому пути к index.html с помощью короткого функционального штепселя, который можно добавить в ваш endpoint.ex без привлечения контроллеров. Он работает, определяя короткую функцию Plug, чтобы изменить запрошенный путь. Моя надежда заключается в том, что в конечной точке это немного быстрее, чем в контроллере.

def redirect_index(conn = %Plug.Conn{path_info: []}, _opts) do 
    %Plug.Conn{conn | path_info: ["elm.html"]} 
end 

def redirect_index(conn, _opts) do 
    conn 
end 

plug :redirect_index 

# This is Phoenix's standard configuration of Plug.Static with 
# index.html added. 

plug Plug.Static, 
    at: "/", from: :phoenix_elm_starter_template, gzip: false, 
    only: ~w(css fonts elm.html images js favicon.ico robots.txt) 

Обратите внимание, что в производстве, то, как правило, иметь дело со статическими активами на сервере приложений слоя, возможно, не попав Phoenix вообще.