0

パーシャルで満たされたディレクトリがあります。各パーシャルの最初の h1 タグのみをリストしたいと考えています。このタスクを達成するためのメソッドは、おそらく他の要素も取得するように変更できます。

現在、私は ruby​​ を使用して各ファイルを開き、最初の数文字を出力し、ファイルを閉じて、繰り返します。Ruby ファイルの解析スキルが限界に達しています。現時点で持っているコードは次のとおりです。

    <% Dir["app/views/partials/show/*.html.erb"].each do |f1| %>
        <% aFile = File.open(f1, "r") %>
        <% if aFile %>
            <% content = aFile.sysread(20) %>
            <p><%= content %></p>
        <% else %>
            <%= "Unable to open file!" %>
        <% end %>
    <% end %>

また、部分全体をメモリで開いていると思いますか?h1タグが見つかるまで読んで、ファイルを閉じて次に進むことができるかどうか疑問に思っていますか? ここでも、最初の h1 タグを検索する方法をまだ把握していないため、最初の 20 文字のみを読み取ります。

オープン、パース、ピースを処理しながら編集を行います...あなたが提供できるガイダンスと方向性に感謝します。ありがとう!

編集: 以下のコメントに基づいて、私の仕事を達成するためのはるかに良い方法があるかもしれません. そのため、他のソリューションの方向性を得るために、いくつかの追加の背景を提供しています。

これは、ディレクトリ内のパーシャルに基づくスライド ショー用です。スライド ショーは、パーシャルの h1 タグで入力したいナビゲーション要素で制御されます。変更が行われるたびにこれらを手動で入力するつもりはありません。エンド ユーザーがパーシャルをディレクトリにドラッグ アンド ドロップするだけで (特定の命名規則とナビゲーション用の h1 タグの説明を使用)、スライド ショーに他のすべての操作を任せることができます。

h1 タグ "forNavigation" とコンテンツ "sliderContent" にクラスを課してから、jquery を使用してポスト ロードを作成できます<ul>が、それは正しくないようです。さらに、それらはすべて同じレンダリングされた div の一部になります。

パーシャルの最初の 50 文字を読み取り、h1 タグに whats をコピーして、それを a に配置することが最もエレガントなソリューションではない理由がはっきりしないと思います。

私が言ったように、上記は最初のh1タグの間のコピーと印刷以外に必要なすべてを行います...xmlパーサーまたはいくつかの正規表現を使用すると、それが行われます。ファイルの解析が苦手です。

これにアプローチする他の方法を教えてください。今でも、パーシャルを (レンダリングの有無にかかわらず) 解析し、必要に応じて必要な場所に配置するのが最善だと思います。

4

1 に答える 1

0

パーシャルは「解析」するためのものではなく、他のパーシャルやテンプレート内でレンダリングするためのものです。パーシャルの一部を取得する必要がある場合は、おそらくその部分を別のパーシャルとして抽出し、その内部パーシャルを「リストされた」パーシャルと「集約された」ビューの両方で使用する必要があります。

于 2012-10-30T15:46:11.920 に答える