2

「共有」フォルダーに部分的に抽出したモーダルがあり、view.js.erb ファイルを使用して JavaScript 呼び出しを介してレンダリングされます。このモーダル パーシャルをレンダリングし、このモーダル パーシャル内に別のパーシャル ブロックをレンダリングできるようにしたいのですが、これは動的である必要があります。モーダル パーシャルで render を呼び出すときに、パーシャルを渡すことができるはずです。部分的な場所でローカルを渡そうとしましたが、これは機能しますが、ネストされた部分に渡したいローカルもある場合は実際には解決しません。

以下は私のコードです:

私の new.js.erb ビュー ファイルからの呼び出し (現在はローカル)。

$('body').append('<%= j(render '/shared/modal', :modal_title => "Create a new Question",      :partial => "render 'questions/form', :btn_message => 'Create'") %>');

_modal.html.erb

<div class="modal hide" id="modal">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal">×</button>
    <h3><%= modal_title %></h3>
  </div>
  <div class="modal-body">
  </div>
  <%= render partial %>
<!--   <div class="modal-footer">
    <a href="#" class="btn" data-dismiss="modal">Close</a>
    <a href="#" class="btn btn-primary">Save changes</a>
  </div> -->
</div>
4

2 に答える 2

2

これがあなたのユースケースで正確に使用できるかどうかはわかりませんが、インスピレーションを与えるかもしれません:

これは親 HAML スニペットです

- render_component :some_params do
  %h2 Titel
  -# whatever you need

ヘルパー内で、ブロックをパーシャルに渡すことができます

  # in helper
  def render_component(some_param, &block)
    # do other things
    concat(render :partial => "shared/component", 
                  :locals => {:some_param => some_param,
                              :block => block})
  end

そして、これは内部パーシャルです

.someCopmonent
  .title
    = some_param
  .renderPassedBlockhere
    - concat(capture(&block))
于 2013-01-16T18:36:27.843 に答える
1

これはテストされていませんが、うまくいくかどうか教えてください。

$('body').append('<%= j(render '/shared/modal', :modal_title => "Create a new Question",      :partial => "render 'questions/form', :partial_vars => {:var1 => 'first var', :var2 => 'second var}, :btn_message => 'Create'") %>');

「partial_vars」パラメータを追加して、partialに送信したことに注意してください。次に、モーダルの共有パーシャルに次のようにします。

<%= render :partial => partial, :locals => partial_vars %>
于 2012-08-04T22:41:59.290 に答える