61882

[code]

    render layout: 'dashboard'
    render 'dashboar'
    
[/code]

は何が違うのでしょうか

layout は内側に yield をもってて  
layouts ディレクトリにおくもの

views/models/ 内におく個別の部品  
みたいな認識だったんですが

memos/index.html.haml

[code]

    = render layout: 'dashboard' do
      :
    end
    
[/code]

とかいても

[code]

    ActionView::Template::Error (Missing partial memos/_dashboard, application/_dashboard with {:locale=>[:ja], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder, :haml]}. Searched in:
    
[/code]

と _ 付きのファイルを探しに行ってしまいます

index からよぶレイアウト自体を dashboard に変更して  
layouts/dashboard.html.haml の中で

[code]

    = render file: 'layouts/application' do
      :
    
[/code]

のようにかいてみたんですが

[code]

    'nil' is not an ActiveModel-compatible object. It must implement :to_partial_path.
    
[/code]

とよくわからないエラーが出ます  
どこにも nil になる要素ってないようにおもうのですが…

layout ってネストしたり view 内からは呼び出せないんでしょうか

[code]

    render application(layout)
      yield => index(template view)
        render dashboard(layout)
          render sidebar(partial view)
          yield => index 内 do 内
    
[/code]

みたいな構成にしたいと思ってるんですがどうかけば実現できるんでしょうか


CC BY-SA 4.0
2019-12-29T04:08:41.063
61871
2019-12-29T18:06:08.677
2019-12-29T05:16:43.320
question
ruby-on-rails
layout とパーシャルビューとテンプレートの違いについて


_ 付きのパーシャルビューでも yield はできるみたいなので

application/_dashboard.html.haml

[code]

    render 'sidebar'
    %main
      = yield
    
[/code]

みたいなレイアウトをおいて

index.html.haml の中で

[code]

    render 'dashboard' do
      :
    end
    
[/code]

とすればパーシャルビューでレイアウトと同じことはできました  
こうなるとレイアウトとパーシャルビューなお何が違うのかますますわからないんですが

１回の描画で１回だけ使えて - がつかないものがレイアウトで  
それ以外は _ 付きのパーシャルビューでできることはまったく同じということなんでしょうか…


CC BY-SA 4.0
2019-12-29T18:06:08.677
61882
2019-12-29T18:06:08.677
61871
answer