質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

1585閲覧

[Rails5.2] Viewファイルで部分テンプレートを使いたい

ozk

総合スコア9

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2020/05/26 16:43

#解決したいこと

以下のviewファイル(app/views/users/show.html.haml)で部分テンプレートを使用したいと思っています。

イメージ説明

部分テンプレート(app/views/users/_show.html.haml)となるのは以下になります。

イメージ説明

部分テンプレートはメニューバーであるため、使いまわしたいです。

そこで、以下のようにしたのですが、エラーが発生しました。
イメージ説明

エラー内容としては以下の通りです。
Haml::SyntaxError in Users#show
イメージ説明

#開発環境

  • Rails 5.2.4.2
  • ruby 2.5.1

#検証したこと
エラーの内容を元に3行目のインデントをスペース8個分に修正しましたが、

show.html.haml:5: syntax error, unexpected keyword_ensure, expecting end-of-input ensure ^~~~~~

というエラーが発生しました。

以下のように変更するとエラーが解消はされるのですが、ネストがされていないのでレイアウトが崩れてしまいます。
イメージ説明

ご教示のほど宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

:partial ではなく :layout を指定します。

haml

1= render layout: 'show', locals: { nickname: @nickname} do 2 .myPage__content__box__right__message 3  = "#{@nickname}さん、こんにちは!"

haml

1-# _show.html.haml 2... 3 .myPage__content__box__right 4 == yield

投稿2020/05/27 05:35

編集2020/05/27 05:40
Mugheart

総合スコア2349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozk

2020/05/28 07:34

ご回答ありがとうございます! ご教示内容で、意図したview表示ができました! 勉強になりました!ありがとうございます!
guest

0

3行目だけネストなのでは?
ならば3行目だけ]インデント

投稿2020/05/26 21:22

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozk

2020/05/27 05:24 編集

ご回答ありがとうございます! つまりこういうことでしょうか?(3行目のみスペース2つ) = render partial: 'show', locals: { nickname: @nickname} .myPage__content__box__right__message  = "#{@nickname}さん、こんにちは!" 上記だとエラーは発生せずページの表示はされるのですが、 レイアウトが崩れてしまいます。 (関係ないと思いますが、部分テンプレートを使用しないコーディング(1枚目の写真の状態)ではレイアウトは意図通りに表示されている状況です。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問