[解決済み] Railsのレンダリングパーシャルをブロック化する
2022-06-29 19:54:06
質問
私は、パネルのスタイルを提供するために書いたhtmlコンポーネントを再利用しようとしています。 次のようなものです。
<div class="v-panel">
<div class="v-panel-tr"></div>
<h3>Some Title</h3>
<div class="v-panel-c">
.. content goes here
</div>
<div class="v-panel-b"><div class="v-panel-br"></div><div class="v-panel-bl"></div></div>
</div>
というわけで、renderはブロックを取るんですね。 それなら、こんなことができるんじゃないかと思ったんです。
# /shared/_panel.html.erb
<div class="v-panel">
<div class="v-panel-tr"></div>
<h3><%= title %></h3>
<div class="v-panel-c">
<%= yield %>
</div>
<div class="v-panel-b"><div class="v-panel-br"></div><div class="v-panel-bl"></div></div>
</div>
というようなことをしたい。
#some html view
<%= render :partial => '/shared/panel', :locals =>{:title => "Some Title"} do %>
<p>Here is some content to be rendered inside the panel</p>
<% end %>
残念ながら、このエラーではうまくいきません。
ActionView::TemplateError (/Users/bradrobertson/Repos/VeloUltralite/source/trunk/app/views/sessions/new.html.erb:1: , unexpected tRPAREN
old_output_buffer = output_buffer;;@output_buffer = ''; __in_erb_template=true ; @output_buffer.concat(( render :partial => '/shared/panel', :locals => {:title => "Welcome"} do ).to_s)
on line #1 of app/views/sessions/new.html.erb:
1: <%= render :partial => '/shared/panel', :locals => {:title => "Welcome"} do -%>
...
というわけで、これは
=
は明らかにブロック付きで気に入らないのですが、これを削除すると、何も出力されなくなります。
私がここで達成しようとしていることを行う方法を知っている人はいますか? 私はこのパネルhtmlを私のサイトの多くの場所で再利用したいと思います。
どのように解決するのですか?
上記の回答は両方とも機能しますが (まあ、とにかく tony がリンクした例です)、私は結局、上記の投稿 (Kornelis Sietsma のコメント) で最も簡潔な答えを見つけました。
私は
render :layout
は
まさに
私が探していたものです。
# Some View
<%= render :layout => '/shared/panel', :locals => {:title => 'some title'} do %>
<p>Here is some content</p>
<% end %>
と組み合わせる。
# /shared/_panel.html.erb
<div class="v-panel">
<div class="v-panel-tr"></div>
<h3><%= title -%></h3>
<div class="v-panel-c">
<%= yield %>
</div>
</div>
関連
-
[解決済み] Ruby/Rails の「フック」とは何ですか?
-
[解決済み] Rubyのクラスで未初期化の定数エラーが発生する
-
[解決済み] Ruby:Rubyの配列にinclude.の反対はある?
-
[解決済み] RoRにおけるSpringサーバーの機能とは?
-
[解決済み] Ruby: public static メソッドを作るには?
-
[解決済み] Railsコントローラからホスト名を取得する
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み】Railsの認証トークンを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ActionController::InvalidAuthenticityTokenについて
-
[解決済み】PG::ConnectionBad: fe_sendauth: パスワードが供給されない
-
[解決済み] Ruby on Railsのランナー
-
[解決済み] デバイスを使用する現在のユーザーメソッド
-
[解決済み] Rails のインストールに失敗する: activesupport には Ruby のバージョン >= 2.2.2 が必要です。
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] Railsです。gemを使った特定バージョンのライブラリのアンインストール
-
[解決済み] railsでhidden fieldタグを使用する方法
-
[解決済み] バリデーションなしで属性を更新する方法
-
[解決済み] Ruby on Rails の新規セットアップ : "Expected string default value for '--rc'; got false (boolean)".