2017-10-14 14 views
-1

I以下router.exありますとのマッチングルート/ *パスが期待通りに動作しません

scope "/api", MyAppWeb do 
    get "/activate", SubscriptionController, :create, as: :activate_account 
end 

scope "/", MyAppWeb do 
    get "/*path", AppController, :index 
end 

SubscriptionController.create/2:

def create(conn, %{"token" => token}) do 
    ... 
end 

行うmix phx.routesショー:

activate_account_path GET /api/activate MyAppWeb.SubscriptionController :create 
app_path     GET /*path   MyAppWeb.AppController :index 

これは、表示されている内容に基づいて、/activateルートがファーになるという事実に加えてrouter.exの場合は、最初に一致させる必要があります。私は/api/activateにGETリクエストを送信したとき

しかし、それはAppController.index/2によって処理されます。

[info] GET /api/activate 
[debug] Processing with MyAppWeb.AppController.index/2 
Parameters: %{"path" => ["api", "activate"], "token" => "test"} 

は、なぜそれがこのように動作していますか?

P.S. SPAが正常に動作するには、/*pathキャッチオールが必要です。そのため、SPAを取り外すことはオプションではありません。

更新:これは私のせいだと判明しました。私は一致していたrouter.exに先に定義された別の/*pathルートを持っていました。私がそれを取り除いて、一番下のものだけを残したら、ルートは正しく一致し始めました。

答えて

0

これは私のせいだと判明しました。私は一致していたrouter.exに先に定義された別の/*pathルートを持っていました。私がそれを取り除いて、一番下のものだけを残したら、ルートは正しく一致し始めました。

関連する問題