partials 在显示集合的时候非常有用,你可以为集合里的项目单独创建一个 Partial,这个 Partial 就相当于是这个集合项目的一个显示的模板 ... 下面我们一起去测试一下 ..
打开 photos 控制器 ... 在它的 index 方法里,添加一个实例变量,名字是 @photos ,它的值可以用一下 Photo 的 all 方法,它可以得到所有的模型 .. 这个 @photos 实例变量可以在这个控制器方法使用的视图里得到 .. 这个视图文件就是 app,views,photos 下面的 index.html.erb
在这里,用一个 render 一个 partial,名字是 photo,再添加一个 collection 选项,把 @photos 作为一个集合传递给 photo 这个 partial .. rails 会迭代这个 @photos ,把集合里的每个项目交给 photo 这个 partial ,每个项目的名字会是 photo ...
再去创建 photo 这个 partial .. 名字是 _photo.html.erb ... 一个 div 标签,加上一个 item 类 ... 在这个标签里,可以输出 photo 的 title 属性 ...
在浏览器上,访问一下 /photos ... 在页面上,你会看到一个照片的标题的列表 ... 也就是 photo 的 title 属性的值 ...
再回到这个 Partial ... 这行代码有个简写形式 .. 我们可以直接 render @photos 这个集合,rails 默认会认为你需要一个 photo partial ... 回到浏览器 ... 刷新 ... 显示的结果是一样的 ...
如果没有要显示的东西,我们可以显示一个提示的文字 .. 把 @photos 放到一个括号里, 后面加上两条竖线,表示或者 ... 然后是没有结果的时候要显示的文字 ...
再把它恢复成完整的形式 ... 我们可以自己给集合里的项目起个名字,默认这个项目就是集合的单数名字,photos 集合的项目就是 photo ... 在它后面,再添加一个 as 选项,然后就是我们为每个项目起的名字,比如 :item ...
再打开它使用的 partial .. 我们需要把 photo ,换成 item ...
回到浏览器 ... 刷新一下 ... 这里仍然可以显示 @photos 集合里的每个项目的标题 ...