2012-08-04 61 views
2

我有一個模式,我已經提取到我的「共享」文件夾中的部分,並將通過使用view.js.erb文件的JavaScript調用呈現。我想渲染這個模態部分,並能夠渲染此模態部分內的另一個部分塊,但這需要是動態的。當我調用模態部分的渲染時,我應該能夠傳入部分內容。我試過在局部位置傳遞一個局部變量,這會起作用,但它並不能真正解決我想要傳遞給嵌套局部變量的局部事件。我可以將部分塊傳遞給Rails 3中的部分渲染嗎?

這裏是我下面的代碼:

從我new.js.erb視圖文件的調用(當前W /本地)。

$('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> 

回答

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」 參數併發送給部分。然後,在你情態的共享部分有這樣的:

<%= render :partial => partial, :locals => partial_vars %> 
+0

這對我有效。謝謝! – Paul 2012-08-04 23:25:43

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))