2016-07-14 6 views
4

私は5つのapiアプリケーションを生成しました。しかし私はホームページで私のアプリが欲しい。そのために私はホームコントローラを生成し、ビューファイルを追加したIそれぞれのビュー/ホーム/ index.html.erbRails 5 api only app with home page

をしかし、私はそれにアクセスしようとしたとき、私は応答

の下に「/ホーム/インデックスを取得しはじめています127.0のため/home/index.jsを "" HTMLなどにHomeController#インデックスにより、2016年7月14日11時14分03秒0530 処理で127.0.0.1のため は0ms

に204コンテンツなしを完了GET開始"。 0.1 at 2016-07-14 11:14:20 +0530 HomeControllerによる処理#index as JS完了204 0msでの内容なし

しかし、インデックスページのコンテンツがWeb上に表示されませんでした。

あなたの考えをお伝えください。

答えて

11

私は同じボートにあって、1つのhtmlページ(ロード時にJSによって引き継がれる)からまだブートストラップできるRails 5 APIアプリケーションを実行しようとしていました。 rails sourceからヒントを盗む、私は次のコントローラ(それは、この唯一の非APIコントローラの代わりに私のApplicationControllerのレールを使っていることに注意してください)

require 'rails/application_controller' 

class StaticController < Rails::ApplicationController 
    def index 
    render file: Rails.root.join('public', 'index.html') 
    end 
end 

を作成し、対応する静的ファイル(プレーン.html、ない.html.erb)を置きますpublicフォルダにあります。私はまた、Railsは意志、routes.rbにルートを設定せずに

など、ディープリンク、リロードのルーティングクライアント側の保存を可能にするために(私のすべてのAPIのルート後)routes.rbの終わりに

get '*other', to: 'static#index' 

を追加しました公衆から/へのコールで直接提供し、それ以外の場合は非APiルートでスタティックコントローラにヒットします。あなたはパスの保全を気にしない場合は、ご使​​用のケースに応じて、(routes.rbのルートなし)public/index.htmlを追加するだけでは十分であるかもしれない、またはあなたの代わりに

get '*other', to: redirect('/') 

を使用して奇数StaticControllerせずに同じようなことを達成することができます。

他の誰かがより良い提案をしているかどうか知りたいです。

+1

ニース!私は同じ問題を抱えており、あなたは私を助けました。しかし、あなたは "レイアウト偽"の線を必要としません。 –

+0

ニースキャッチ、そうです! –

1

静的なHTMLページ(いくつかの単純なCSS/jを使用)だけであれば、index.htmlページをpublicフォルダに編集するだけです。