首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >render :partial with partial:集合

render :partial with partial:集合
EN

Stack Overflow用户
提问于 2009-12-02 23:32:46
回答 1查看 4.1K关注 0票数 0

假设我有一个@dog集合,我希望在一个位置呈现集合的一部分,而在另一个位置呈现其余部分。很容易把它们一起吐出来:

代码语言:javascript
运行
复制
render :partial => 'dogs/summary', :collection => @dogs, :as => :dog

但是,有没有可能对集合进行内联操作(优化),或者更好的做法是在控制器中创建这些定义并执行以下操作:

代码语言:javascript
运行
复制
%h2 Male Dogs:
render :partial => 'dogs/summary', :collection => @male_dogs, :as => :dog

%h2 Female Dogs:
render :partial => 'dogs/summary', :collection => @female_dogs, :as => :dog

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-02 23:34:31

集合参数只接受一个列表。这没有理由不起作用:

代码语言:javascript
运行
复制
render :partial => 'dogs/summary',  :as => :dog,
  :collection => @dogs.select{|dog| dog.gender == "M"}

就我个人而言,我更喜欢在控制器中创建这些列表。我认为看起来更好,并且可以通过命名作用域使其更加干燥。

即:

模型

代码语言:javascript
运行
复制
class dog < ActiveRecord::Base
   named_scope :male, :conditions => {:gender => "M"}
   named_scope :female, :conditions => {:gender => "F"}
   ...
end

控制器

代码语言:javascript
运行
复制
class DogsController < ApplicationController
  ...
  def index
    if params[:user_id]
      @user = User.find(params[:user_id])
      @male_dogs = @user.dogs.male
      @female_dogs = @user.dogs.female
    else
      @male_dogs = Dog.male
      @female_dogs = Dog.female
    end
  end
end

视图

代码语言:javascript
运行
复制
%h2 Male Dogs
= render :partial => 'dogs/summary',  :as => :dog,
  :collection => @male_dogs

%h2 Female Dogs
= render :partial => 'dogs/summary',  :as => :dog,
  :collection => @female_dogs
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1833659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档