1

私は Ruby on Rails を学び始めたばかりで、ページに新しいページを作成するたびにapp/assets/viewslayouts/applicationHTML マークアップと<%= yield %>

しかし、別のページ収量 (またはデフォルトのアプリケーション ページ以外の別のレイアウト) のホームページを作成したい場合、そのデフォルトのアプリケーションを通過する必要がないようにするにはどうすればよいでしょうか?

ありがとう!

4

2 に答える 2

1

コントローラーがあり、レイアウトを設定できるとしましょう:

class HomeController < ApplicationController
  layout 'my_layout'
end

これにより、コントローラーHomeControllerのすべてのアクションが、デフォルトのレイアウトではなく、レイアウト「app/views/layouts/my_layout.html.erb」をレンダリングするようになります。

次のように、アクションのレイアウトを指定することもできます。

class HomeController < ApplicationController
  def index
    render layout: 'my_layout'
  end
end

または、レイアウトをまったく使用しない場合:

class HomeController < ApplicationController
  def index
    render layout: false
  end
end

レールとレイアウトの詳細については、こちらを参照してください。

于 2013-04-05T03:11:15.883 に答える
1

これを実現するにはいくつかの方法があります。

コントローラ ワイド

layoutコントローラーでは、メソッドを使用できます

class MyController < ApplicationController
  layout :name_of_my_layout
end

これはapp/views/layout/name_of_my_layout.html.erb、以下のすべてのアクションのレイアウトとして使用されますMyController

layoutレイアウトの名前を返すメソッドを渡すこともできます

class MyController < ApplicationController
  layout :random_layout

  private

  def random_layout
    %[layout1 layout2 layout3].sample
  end
end

このメソッドは、リクエストごとrandom_layoutにアクションで使用されるレイアウトを決定します。MyController

レンダリングごと

layoutオプションを render 呼び出しに渡すことで、上記のオプションをオーバーライドできます。

class MyController < ApplicationController
  layout :name_of_my_layout

  def index
    ...
    render layout: false # no layout
  end

  def new
    ...
    render layout: 'my_super_duper_layout_for_the_new_action'
  end
end

命名規則

コントローラーの名前をレイアウトの名前として使用できます。たとえば、投稿コントローラーがある場合、コントローラーでレイアウトを指定していない場合app/views/layouts/posts.html.erbの代わりに、レールはこれを使用します。app/views/layouts/application.html.erb

于 2013-04-05T03:12:44.530 に答える