2

公開されている index.html (スタイルシートやフォームなど) で ruby​​ を使用したいと考えています。しかし、私はこれを行う方法を理解できません:S

名前を index.html.erb または index.erb に変更すると、レールによって認識されません。代わりに、ルートからのルートが使用されます (これはアプリの一部であり、ユーザーがログインする必要があります)。

4

4 に答える 4

4

ディレクトリ内のもの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 -->

これにより、必要な動作が得られます。

于 2013-08-28T14:19:36.280 に答える
2

適切なコントローラーとビュー (拡張子は html.erb) を生成する必要があります。public フォルダーからも削除index.htmlし、Rails ルーターに (config/routes.rb を変更して) root でコントローラーを使用するように指示する必要があります。次に例を示します。

root to: 'home#index'
于 2013-08-28T10:32:28.820 に答える
1

root to: ....ルート ファイルとpublic/index.htmlページで同時にセットアップすることはできません。ファイルでルートを使用する場合、これはパブリック ディレクトリからroutes.rb削除する必要があることを意味します。そのため、ルート パスのビューで必要なのは、ユーザーがログイン?はいの場合: 彼にいくつかのコンテンツを表示し、そうでない場合は他のコンテンツを表示します。これがあなたを助けることを願っていますindex.html

: PUBLICディレクトリは、内部に ruby​​ コードを含まない静的ページをレンダリングするために使用されます。これは、パブリック ディレクトリからページを要求したときに、それを解釈するために Rails サーバーを呼び出すことはないため、.erb 拡張子を追加できないことを意味します。

于 2013-08-28T11:04:56.080 に答える
0

コントローラーで

def home
 @datas = Datas.all
 render :file => 'public/index.html'
end
于 2016-12-17T02:58:47.397 に答える