問題タブ [view-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
521 参照

ruby-on-rails - Rails 3ビューの継承では、子ビュー内で「スーパー」を呼び出すことはできますが、親変数を送信することはできますか?

私のアプリのすべてshowのアクションには、すべてのモデルに対して同じテンプレートがあります(これは管理者ポータルタイプのインターフェイスです)。show.html.erbこれらのモデルはすべて継承していると思います。

コントローラーはすべて、ExplicitResourcesを使用するため、親ビューに表示resourceされているモデルの属性を表示するために使用する、などのいくつかのヘルパー変数にアクセスできます。resource.attributes

私がやりたいのは、各モデルに表示されている属性をホワイトリストに登録することです。これを行うには2つの方法を考えました...1つ目は、モデルの継承元のクラスでメソッドを定義することです。たとえば、メソッドが呼び出さattr_visibleれ、モデルの各属性を定義します。このアプローチが気に入らない理由は、モデルにビューロジックが多すぎるためです。むしろ、モデルにビューを提供し、ビューに表示内容を決定させたいと思います。

2番目のアプローチは、この質問の内容です。ファイルを作成し、表示/app/views/users/show.html.erbするユーザーの属性を設定したいのですが、次のように言います。

次に、この質問の冒頭で説明した親ビューにそれらを渡します。そのビューは、ループして@attributes必要な属性を表示できるようになります。

superビューから「」タイプのメソッドを使用することはできますか?ビューの継承について私が読んだすべてのことは、ビューがディレクトリ構造内のどこにあるかに基づいてロードされ、その後は運が悪いことを示唆しています。

編集:私は自分がやりたいことをやった。/ app / views/usersディレクトリに次のような部分的な_show.html.erbを定義しました。

そして、親ビューで、<%= render "show" %>ループする前に呼び出します@attributes。これは機能しますが、呼び出したときに実際には何もレンダリングしていないため、不格好に感じますrender。もっと良い方法はありますか?

0 投票する
1 に答える
50 参照

ruby-on-rails - 管理者用のRails 3固有のコントローラーは、デフォルトの「表示」ビューをレンダリングします

それが私の問題です。この優れたチュートリアルに従って、アプリに別の管理レイヤーを実装しようとしています: http://iain.nl/backends-in-rails-3-1

すべてがスムーズに動作しますが、views/backend/items/index.html.erb では次の共通点があります:

デフォルトのアプリケーション ビューを取得しています: backend/views/items/show ではなく、views/items/show

インデックス ページへの呼び出しは backend/items_controller から行われていますが、Rails 3 ビューの継承がチェーンの最初の部分をスキップしているようです。

何か案が?

ありがとう!