1

私はこのHAMLページを持っています:

-content_for :primary_content do

  Hmmm
  %strong{:class => "code", :id => "message"} Hello Alex!

  .container-fluid
    .row-fluid
      .span1 Hello 1
      .span4 Hello 4
      .span4 Hello 4 again
      .span3 Hello 3

  %strong{:class => "code"} End of page!

  .container-fluid
    .row-fluid
      .span9 My Disclosures o ye!
      .span3 This will be the side area

      // Ok....what is in home?
      // The two divs....

  -content_for :primary_content do
    -if signed_in?
      // =render "sidebar/common/primary_navigation"
      // If signed in, show the options for
      // 1) Logout | My Profile
      // 2) Create disclosure | show disclosures
      Signed in
    -else
      // =render "devise/sessions/form"
      NOT Signed in

何らかの理由で、それはNot signed in Hmmm Hello Alex!一番上の行にレンダリングされ、次にその下にある他のすべてのものがレンダリングされます。

ページの下部に「サインインしていない」が表示され、上部に「うーん、こんにちはアレックス」が表示されているので、混乱しています。しかし、何らかの理由で、画面上で一緒にレンダリングされます。なぜですか?

ありがとう!

4

1 に答える 1

2

まず、ネストされたcontent_forがあるようですが、これが問題になる可能性があることを指摘しておきます。

次に、2つのcontent_forブロックを分離し、ログイン領域専用に別のブロックを作成することをお勧めします。何かのようなもの

- content_for :login do
  -if signed_in?
    // =render "sidebar/common/primary_navigation"
    // If signed in, show the options for
    // 1) Logout | My Profile
    // 2) Create disclosure | show disclosures
    Signed in
  -else
    // =render "devise/sessions/form"
    NOT Signed in

次に入れます

yield :login

後のどこか

yield :primary_content

関心の分離とそれを作成して、他の人のつま先を踏むコンテンツがないようにします。

于 2012-04-20T16:14:49.353 に答える