[解決済み】railsの部分テンプレートでオプションのローカル変数:(defined? foo)の混乱から抜け出すには?
2022-04-02 15:38:12
質問
私は悪い子で、パーシャルテンプレートの中で以下の構文を使い、パーシャルのレンダリング時に :locals ハッシュで明示的に値が定義されていない場合、ローカル変数にデフォルト値を設定しました --。
<% foo = default_value unless (defined? foo) %>
これは最近まではうまくいっていたようですが、(何の理由もなく)パスされていない変数が(未定義ではなく)nilに定義されているかのように動作するようになりました。
SOの様々な親切な方々からのご指摘の通りです。 http://api.rubyonrails.org/classes/ActionView/Base.html 曰く ではなく を使用します。
defined? foo
を使用し、代わりに
local_assigns.has_key? :foo
私は自分のやり方を修正しようとしていますが、それは多くのテンプレートを変更することを意味します。
この変更は、すべてのテンプレートに適用してよいのでしょうか? 何か気をつけるべき点はありますか? どれくらいの頻度でテストをすればいいのでしょうか?
どのように解決するのですか?
私はこうしています。
<% some_local = default_value if local_assigns[:some_local].nil? %>
関連
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] サーバーはRailsで既に稼働している
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Ruby/RailsでHashからキーを削除して残りのHashを取得する方法は?
-
[解決済み] Rubyのクラス名を取得する方法を教えてください。
-
[解決済み】Ruby on Railsでコンソールからコントローラ/ビューヘルパーメソッドを呼び出すにはどうすればよいですか?
-
[解決済み】railsでカスタム設定変数を定義する方法
-
[解決済み】Railsで現在のルートを調べるには?
-
[解決済み】Rails: respond_toブロックはどのように動作しますか?
-
[解決済み】Rails: モデルがすでに存在するときに`rails generate scaffold`を実行するにはどうすればよいですか?
最新
-
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について
-
[解決済み】Rails 4 RoutingError: ルートが一致しない[POST]。
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜでしょうか?
-
[解決済み] Rails のインストールに失敗する: activesupport には Ruby のバージョン >= 2.2.2 が必要です。
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] 属性を割り当てる場合、引数としてハッシュを渡す必要がある
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?
-
[解決済み] Heroku Error R14 (Memory quota exceeded): How do I solve this?
-
[解決済み] Ruby on Rails の新規セットアップ : "Expected string default value for '--rc'; got false (boolean)".