RailsGuide의 Partial Layouts는 설명한 대로 움직이지 않습니다.(Rails 자습서 참조)

6995 단어 RailsGuideRubyRails
베껴쓰기RailsGuide 과정에서 쓴 결과에 따라 쓰지 못한 부분이 있어 잊지 않기 위해 미리 필기를 했다.

문제점


Action View Overview에 나오는 코드는 다음과 같습니다.
<% render(layout: 'box', locals: { article: @article }) do %>
  <div>
    <p><%= article.body %></p>
  </div>
<% end %>
Rails Guide의 설명에는 상기locals: { article: @article }에 따라 do・・・end 중의 <%= article.body %>의 로컬 변수article 참조@article를 기재하고 기대와 일치하는 HTML 같은 설명을 재현했지만 그렇지 않았다.

베껴쓰는 순서


1. 환경의 확인

railsguide라는 rails 프로그램을 만들었습니다.DB는 MySQL입니다.
[ykt68@macbook railsguide]$ ruby -v
ruby 2.2.6p396 (2016-11-15 revision 56800) [x86_64-darwin15]
[ykt68@macbook railsguide]$ rails -v
Rails 5.0.2

2.scaffold로article 만들기

[ykt68@macbook railsguide]$ rails g scaffold article body
Running via Spring preloader in process 33051
      invoke  active_record
・・・

3. 아티컬 레코드 제작

[ykt68@macbook railsguide]$ rails db:migrate
== 20170315224850 CreateArticles: migrating ===================================
-- create_table(:articles)
   -> 0.0224s
== 20170315224850 CreateArticles: migrated (0.0225s) ==========================

[ykt68@macbook railsguide]$ rails c
Running via Spring preloader in process 33288
Loading development environment (Rails 5.0.2)
irb(main):001:0> Article.create(body: 'Partial Layouts are cool!')
   (0.1ms)  BEGIN
  SQL (0.4ms)  INSERT INTO `articles` (`body`, `created_at`, `updated_at`) VALUES ('Partial Layouts are cool!', '2017-03-16 07:51:08', '2017-03-16 07:51:08')
   (1.0ms)  COMMIT
=> #<Article id: 1, body: "Partial Layouts are cool!", created_at: "2017-03-15 22:51:08", updated_at: "2017-03-15 22:51:08">
irb(main):002:0> exit
[ykt68@macbook railsguide]$

4.scaffold가 만든 show.html.erb를 표시합니다.

[ykt68@macbook ch09]$ rails s
=> Booting Puma
=> Rails 5.0.2 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.8.0 (ruby 2.2.6-p396), codename: Sassy Salamander
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
브라우저에서 액세스http://localhost:3000/articles/1하면 다음과 같이 표시됩니다.
4 Partial Layouts
지금까지 준비였습니다. 다음은 주제입니다.

5. Rails Guide처럼 템플릿 수정, 추가


5.1 show.html.다음은 eb입니다.


app/views/articles/show.html.erb
<% render(layout: 'box', locals: { article: @article }) do %>
  <div>
    <p><%= article.body %></p>
  </div>
<% end %>

5.2 이하의box.html.eb가 추가되었습니다.


app/views/articles/_box.html.erb
<div class='box'>
  <%= yield %>
</div>

6. 결과


wktk에서 기대하는 동작으로 상기 5.1, 5.2처럼 다시http://localhost:3000/articles/1 show.html.erb HTML
<div class='box'>
  <div>
    <p>Partial Layouts are cool!</p>
  </div>
</div>
예.

그렇다면 도대체 무슨 이유일까

오류 메시지
undefined local variable or method `article' for #<#<Class:0x007fa20b328a48>:0x007fa20b2f8be0>
이런 견해가 있다.

청원


마지막으로 부탁드릴게요.
· 원래 RailsGuide의 설명과 해석은 매우 이상하다
혹은
• 확인 절차가 이상하다
만약 이런 곳이 있다면 지적해 주십시오.m(_ _)m
그게 다야.

좋은 웹페이지 즐겨찾기