我可以将部分块传递给Rails 3中的部分渲染吗?
问题描述:
我有一个模式,我已经提取到我的“共享”文件夹中的部分,并将通过使用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>
答
这不是测试,而是让我知道它是否适合你:
$('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 %>
答
我不知道是否正是这一点可以在你使用的情况下被使用,但它可能会提供一些启示:
这是父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))
这对我有效。谢谢! – Paul 2012-08-04 23:25:43