RailsGuide의 Partial Layouts는 설명한 대로 움직이지 않습니다.(Rails 자습서 참조)
6995 단어 RailsGuideRubyRails
문제점
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
그게 다야.
Reference
이 문제에 관하여(RailsGuide의 Partial Layouts는 설명한 대로 움직이지 않습니다.(Rails 자습서 참조)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jun68ykt/items/d14ffab2eda5675821ea
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<% render(layout: 'box', locals: { article: @article }) do %>
<div>
<p><%= article.body %></p>
</div>
<% end %>
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
그게 다야.
Reference
이 문제에 관하여(RailsGuide의 Partial Layouts는 설명한 대로 움직이지 않습니다.(Rails 자습서 참조)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jun68ykt/items/d14ffab2eda5675821ea
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(RailsGuide의 Partial Layouts는 설명한 대로 움직이지 않습니다.(Rails 자습서 참조)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jun68ykt/items/d14ffab2eda5675821ea텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)