問題タブ [partials]

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 投票する
2 に答える
1495 参照

ruby-on-rails - Rails2.3.5でモデルからパーシャルをレンダリングする方法

Rails 2.3.5アプリケーションがあり、モデル内からいくつかのパーシャルをレンダリングしようとしています(私は知っています、私は知っています-私はそうするべきではありません)。これを行う理由は、Cometサーバー(APE)をRailsアプリに統合し、モデルのイベント(after_createなど)に基づいて更新をプッシュする必要があるためです。

私はこれをやってみました:

これにより、ヘルパーを使用しない単純なパーシャルをレンダリングできますが、パーシャルでlink_toを使用しようとすると、次のようなエラーが発生します。

「project_path(project)」に渡されるオブジェクトがnilでないことを確認しました。私も含めてみました:

上記の「render」呼び出しを行うメソッドを含むモジュール内。

誰かがこれを回避する方法を知っていますか?

ありがとう

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

ruby-on-rails - Rails 3 render:partials

1.8.7 Rails アプリを Rails 3 に移行しています。しかし、パーシャルに問題があります。次のパーシャルがあります。

私のcmsコントローラーで:
@clients = Client.all
group = render_to_string :layout => 'layouts/window', :partial => 'clients/index'

私の「clients/index」部分で:
<%= render :partial => 'clients/item', :collection => @clients %>

これは Rails 1.7.8 では問題なく動作しましたが、Rails 3 ではインデックスのパーシャルのみがレンダリングされます! したがって、これを明確にするために、コントローラーのグループ変数はレイアウトから html を取得しません。また、奇妙なことは、ウィンドウのレイアウトが _window.erb であることです (window.html.erb を実行した場合、または単に window.erb レールがそれを見つけられないのは奇妙です)。

この動作がRails 3で正常かどうかは誰にもわかりませんか?

ありがとう!

0 投票する
2 に答える
1301 参照

javascript - パーシャルを介して同じコントロールを繰り返す場合、RailsでHTML要素IDを自動生成します

RailsのパーシャルをjQueryの子フィールドテンプレートと組み合わせて使用​​して、複数のネストされた子属性を持つフォームを動的に生成しています。これらのパーシャル内には、フォームでさまざまなイベント(onChangeなど)が発生したときに起動されるJavaScriptがあり、実行するコードは、関連しているが異なるフォーム要素のDOMを変更する必要があります。この特定のケースでは、POSタイプのソリューションで複数の販売トランザクションを特定のトランザクショングループに追加し、トランザクションごとに収集されるデータを制御するために使用しています。したがって、たとえば:

  1. ユーザーは、トランザクショングループに3つの新しいトランザクションレコードを追加するリンクをクリックします。
  2. ユーザーは、これら3つのトランザクションレコードのそれぞれに異なる値を設定します。各レコードは、各イベントのDOMをさまざまな方法で操作する必要があるJS関数を呼び出すonChangeイベントを発生させます。(例:トランザクション1は返品である可能性があるため、トランザクションのテキストがコストから返金に変更され、トランザクション2はサービス用である可能性があるため、課税ステータスが変更されます...)
  3. JS関数は、正しいトランザクションのためにDOMを変更できる必要があります。

私の問題は#3-変更されるDOM要素がイベントを生成する要素と同じではないため、JSthisを使用できませ。これらは共通の親要素の一部であるため(つまり、親<div>を共有します)、jQueryの親/子セレクターを使用してDOM内の正しい要素に移動できる場合があります。ただし、これでもdiv id属性にある程度の一意性が必要であり、Railsでこれらを動的に生成するための最良の方法がわかりません。

ランダムな値を使用できると思いますが、これは本当に一意であることが保証されておらず、ハックのように見えるため、悪いようです。なんらかのカウンターを導入しようと思うかもしれませんが、これはRails開発の原則に違反しているようです。

任意のガイダンスをいただければ幸いです。ありがとう!

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

ruby-on-rails - パーシャルで属性を forms_helper.select にバインドすることは可能ですか?

<select>Rails ビューで、制限された値を持つさまざまな文字列フィールドのドロップダウン リストを表示しようとしています。

私はこれをパーシャル(以下)でやろうとしましたが、現在の値が<select>リストで選択されていません。

  • これを部分的に行うことは可能ですか?もしそうなら、どのように?
  • 取るべきより良いアプローチはありますか?

edit.html.erb:

_select.html.erb:

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

ruby-on-rails - 複数のモデルの Rails での Ajax フォーム パーシャル

多くのビュー(new.html.erbおよびedit.html)に存在するこのAJAXコードhttp://badpopcorn.com/blog/2008/09/11/rails-observer-field/から取得)があります.erb ほとんど)。コードの重複を避けるために、パーシャルを使用するふりをします。

アプリ/ビュー/都市/_state_city_form.html.erb

また、Ajax コールバック コンテンツもあります。

アプリ/ビュー/都市/by_state.html.erb

そして私の都市コントローラー:

app/controllers/cities_controller.rb

次に、必要な場所からすべてのパーシャルを呼び出すだけです。

アプリ/ビュー/ユーザー/new.html.erb

アプリ/ビュー/従業員/new.html.erb

ここで : userまたは:employeeをパーシャルに渡すことができますが、それらを Ajax コールバックに渡すにはどうすればよいでしょうか?

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

ruby-on-rails - フォームを含む部分が両方のコントローラーに表示されるが、一方のコントローラーで送信に失敗する

フォームを含むパーシャルがあります:

メッセージとタグの 2 つのコントローラーでこれを使用しています。メッセージコントローラーでは正常に機能しますが、タグコントローラーでは機能しません。tags#show でレンダリングされると、タグ フィールドが自動入力されます。tags#show からメッセージが送信されると、Web サイトのルートにリダイレクトされ、「タグが存在しません」というフラッシュ エラーが表示されます。

タグ コントローラー:

明確でない場合: パーシャルがビューに表示され、その中のフォームはタグ コントローラーからデータを送信せず、リダイレクトされます。パーシャルは、メッセージ コントローラーから正常に動作します。これは Rails 2.3.x アプリケーションです。私の質問を読んでいただきありがとうございます。お時間をいただきありがとうございます。

0 投票する
2 に答える
2335 参照

ruby-on-rails - ヘルパーはパーシャルよりも本当に速いですか?文字列の作成はどうですか?

Railsアプリに、読み込みに時間がかかりすぎる、派手な「ワークシート」スタイルのビューがあります。(開発モードでは、キャッシュがないことを知っています。「57893msで完了しました(表示:54975、DB:855)」)ワークシートはヘルパーメソッドを使用してレンダリングされます。ワークシートのさまざまな種類の行。今、パーシャルが実際に速いのではないかと思っていますか?

ページの読み込みをプロファイルし、オブジェクトのキャッシュが数秒短縮されるいくつかのケースを特定しましたが、プロファイルの出力は、ワークシートモデルの構成オブジェクトをループし、からの文字列出力を追加するだけで、かなりの時間が費やされることを示しています。ヘルパー。これが私が話していることの例です:

パーシャルを使用するOTOHは、ファイルを開き、Rubyインタープリターをスピンオフし、長期的には、一連の文字列を集約することを意味します。だから私はヘルパーで物事をスピードアップする別の方法があるかどうか疑問に思っています。文字列ストリームのようなものを使用する必要がありますか(Rubyに存在しますか?)、独自の ""文字列補間を優先してcontent_tag呼び出しを削除する必要があります...独自のパフォーマンステストを作成し、共有します結果、私がすでに採用したアプローチの代替案があれば。

これはかなり複雑なビューであるため(編集可能なバージョンもあります)、全体を何度も書き直してプロファイルを作成することは避けたいと思います。:)

いくつかの関連する読書:

http://www.viget.com/extend/helpers-vs-partials-a-performance-question/(old)http://www.breakingpointsystems.com/community/blog/ruby-string-processing-overhead/
http _
_ ://blog.purepistos.net/index.php/2008/07/14/benchmarking-ruby-string-interpolation-concatenation-and-appending/

@tadman: 行の合計と列の合計(およびより多くの列の算術)があり、それらはすべて単なる合計ではなく、データベースの他の「マジックナンバー」にも依存するため、JavascriptではなくRubyコードで実装しました。(DRYおよびユニットテスト可能。)Javascriptは編集ビューでのみ使用され、行の追加/削除(クライアント側のみ)およびセルの内容が変更されたときに新しい合計を含むシートをフェッチするためにのみ使用されます。入力セルが変更されると値のほぼ半分が更新されるため、テーブル全体がフェッチされます。

ワークシートとその行は実際には仮想モデルです。それらはDBに存在しませんが、実際のARオブジェクトのボートロードを集約します。ビューがレンダリングされるたびに作成されます(ただし、開発モードでは1.7秒かかるため、心配する必要はありません)。

マークアップされたコンテンツではなく、数字のマトリックスを送信して、JSにシートにアンパックさせることができると思います。しかし、それはすぐに維持できなくなります。

0 投票する
2 に答える
1293 参照

ruby-on-rails - Rails Views: 変数を部分レイアウトに渡すにはどうすればよいですか?

私のビューの 1 つで、コード ブロックにレイアウトを適用します。

レイアウトは、4 つの側面すべてに png シャドウがある div です。

サイト全体でこのレイアウトを使用しているため、シャドウ div の幅を指定する変数をレイアウトに渡したいと考えています。コードブロックでコンテンツを使用してみました:

これは機能せず、代わりにコード ブロック全体の二重レンダリングが発生しました。

この問題に取り組む最善の方法は何ですか?

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

xml - mvc 2 xml パーシャルのヘルプ

わかりましたので、Fusion Charts にデータを提供するために、XML を与える必要があります..これに絞り込みました

レンダリングする

しかし、私がレンダリングする必要があるのは..

RenderPartial がスペースなしで文字列を返すようにするにはどうすればよいですか?

0 投票する
2 に答える
303 参照

php - パーシャルがビジネスロジックに依存している場合、パーシャルはどのようにロードする必要がありますか?

私は「部分的」という用語を使用して、多くのビューで繰り返されるプレゼンテーションコードの小さなセクションを指します。たとえば、サイドバー。ビジネスロジックとプレゼンテーションロジックが混在しているバニラPHPでは、サイドバーを含めても問題ありません。

ただし、MVCデザインパターンでは、プレゼンテーションロジックをビューに保持し、ビジネスロジックをコントローラーに保持する必要があります。パーシャルを無条件に含めたい場合はinclude('sidebar.php')、自分の見解に含めることができるので、これは問題ありません。しかし、論理が私の見解から禁止されている場合、私はもはや条件付きでそうすることができません。

私はいくつかの解決策を試みましたが、それらはすべて問題があります。現在、ソリューション2を使用しています。

解決策1

コントローラーからのコンテンツを条件付きで含めることができるinclude関数をビュークラスに作成します。したがって、私のコントローラーでは、次のロジックを使用できます。

問題: sidebar.phpは、特定の時点でindex.phpにインクルードする必要があり、ビューオブジェクトのincludeメソッドで何らかの解析を行う必要があります。

解決策2

パーシャルのコントロールをビューの外に移動し、コントローラーに配置します。

問題:プレゼンテーションロジックの大部分をコントローラーの領域に移動します。ビューがヘッダーを含めるかどうかを決定するのは、私にとってより自然なようです。実際、私が見つけることができるすべてのPHP MVCチュートリアルには、コントローラーではなくビューの制御下にあるパーシャルがあります。

解決策3

ビューを複製し、サイドバーが含まれるようにクローンを変更します。次に、コントローラーに条件付きでどちらかをロードできます。

問題:コードの重複。条件付きでロードする必要のあるサイドバーが2つあるとどうなるか考えてみてください。次に、私は必要になりますindex.php, indexWithSidebar1.php, indexWithSidebar2.php, indexWithSidebar1And2.php。これは、すべての条件で悪化するだけです。サイドバーを部分的に取り出すことの全体的なポイントは、とにかくそれを複製することを避けることであり、このアプローチはポイントを打ち負かすように思われることを覚えておいてください。

これらの解決策のいずれかが「正しい」解決策ですか。もしそうなら、どうすればそれらの問題を克服できますか?そこにもっと良いアプローチはありますか?