【问题标题】:Merging multiple partials before rendering在渲染之前合并多个部分
【发布时间】:2013-08-23 20:24:24
【问题描述】:
下面的两个部分都是表格的元素并且具有相同的结构。所以我希望先合并这两个部分,然后将它们呈现给我的 ajax 调用。这可能吗?
def refreshprojects
@projects = Project.get(params[:username])
render :partial => "project.elements.data", :locals => {:projects=>@projects }
render :partial => "project.shared.elements.data", :locals => {:projects=>@projects_shared }
end
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-3
ruby-on-rails-3.1
【解决方案1】:
考虑到@projects 和@shared_projects 是数组,您可以将它们组合成一个数组传递给其中一个部分,而不是单独进行。
渲染 :partial => "project.elements.data", :locals => { :projects=> @projects + @projects_shared }
如果 UI 的部分内容存在差异,您可以在视图中使用动作名称(即refreshprojects.html.erb)调用两者,然后从动作中删除这两行。
渲染 :partial => "project.elements.data", :locals => {:projects=>@projects }
渲染 :partial => "project.shared.elements.data", :locals => {:projects=>@projects_shared }
【解决方案2】:
一个简单的方法是创建另一个视图refreshprojects,然后在其中渲染两个部分。
然后你会在你的ajax调用中渲染refreshprojects。