公開されている index.html (スタイルシートやフォームなど) で ruby を使用したいと考えています。しかし、私はこれを行う方法を理解できません:S
名前を index.html.erb または index.erb に変更すると、レールによって認識されません。代わりに、ルートからのルートが使用されます (これはアプリの一部であり、ユーザーがログインする必要があります)。
公開されている index.html (スタイルシートやフォームなど) で ruby を使用したいと考えています。しかし、私はこれを行う方法を理解できません:S
名前を index.html.erb または index.erb に変更すると、レールによって認識されません。代わりに、ルートからのルートが使用されます (これはアプリの一部であり、ユーザーがログインする必要があります)。
ディレクトリ内のものpublic
はすべて静的アセットとしてレンダリングされるため、そこに Ruby コードはありません。
代わりに、index.html
そのディレクトリ内のファイルを削除し、アプリ内の別のものに置き換える必要があります。たとえば、次のようなことができます。
# app/controllers/site_controller.rb
class SiteController < ApplicationController
def index
# ...
end
end
# config/routes.rb
root to: 'site#index'
# app/views/site/index.html.erb
<!-- Your HTML and Ruby here -->
これにより、必要な動作が得られます。
適切なコントローラーとビュー (拡張子は html.erb) を生成する必要があります。public フォルダーからも削除index.html
し、Rails ルーターに (config/routes.rb を変更して) root でコントローラーを使用するように指示する必要があります。次に例を示します。
root to: 'home#index'
root to: ....
ルート ファイルとpublic/index.html
ページで同時にセットアップすることはできません。ファイルでルートを使用する場合、これはパブリック ディレクトリからroutes.rb
削除する必要があることを意味します。そのため、ルート パスのビューで必要なのは、ユーザーがログイン?はいの場合: 彼にいくつかのコンテンツを表示し、そうでない場合は他のコンテンツを表示します。これがあなたを助けることを願っていますindex.html
注: PUBLICディレクトリは、内部に ruby コードを含まない静的ページをレンダリングするために使用されます。これは、パブリック ディレクトリからページを要求したときに、それを解釈するために Rails サーバーを呼び出すことはないため、.erb 拡張子を追加できないことを意味します。
コントローラーで
def home
@datas = Datas.all
render :file => 'public/index.html'
end