我可以将部分块传递给我在Rails 3中渲染的部分块吗?

时间:2012-08-04 19:06:40

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个模态,我已经提取到我的“共享”文件夹中的部分文件,并将使用view.js.erb文件通过javascript调用进行渲染。我想渲染这个模态部分,并能够在此模态部分内渲染另一个部分块,但这需要是动态的。当我在模态局部调用render时,我应该能够传入partial。我已经尝试在部分位置传入本地,这样可以工作,但它并没有真正解决我也想要传递给嵌套部分的本地人的情况。

以下是我的代码:

来自我的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>

2 个答案:

答案 0 :(得分: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))

答案 1 :(得分: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 %>
相关问题