管理优化@视图
我有这样的代码:管理优化@视图
<% if @photos.blank? %>
No Pic
<% else %>
<center>
<table>
<tr>
<% @photos.each do |c| %>
<td>
<%= image_tag(url_for({:action => 'image', :id => c.id}),:width =>'20%', :height =>'20%') %><br>
<%= link_to "lihat" , {:action => 'show2', :id => c.id} -%>
<% if logged_in? %>
<small> <%= link_to 'Edit', {:action => "edit2", :id => c.id } %></small>
<small> <%= link_to 'Delete', {:action => "delete2", :id => c.id }, :confirm => "apakah anda yakin mau mengapus berita ini?" %></small>
<% end %>
</td>
<% end %>
</tr>
</table>
</center>
<% end %>
我想打印我的图片“如果列= 5”全自动添加每行
或5图像 输出: [图像] [图像] [图片] [图片] [图片]
我该怎么处理我的代码?请帮我
有几个方法,你可以解决“5张照片上一行”的问题,但我认为这是最传神:group
照片的排列为5行,并使用嵌套.each
循环:
rows = @photos.in_groups_of(5)
rows.each do |row|
<tr>
row.each do |photo|
<td>
#display photo here
</td>
end
</tr>
end
请注意,如果你没有在你的最后一行5张照片,array#in_groups_of
与nil
意志垫,除非你指定替代默认。
你可以做这样的事情
@photos.each_slice(5) do |slice|
slice.each do |photo|
# render photo.name, photo.title...etc here
end
end
if i modified with slice :
<h1>All Photos</h1>
<% @photos.each_slice(5) do |slice| -%>
<% slice.each do %>
<h2><%= link_to photo.title,
photo_path(:user_id => photo.user, :id => photo) %></h2>
<p>
<%= image_tag(url_for({:action => 'image', :id => photo.id}),:width => '10%',:height => '10%') %>
<br>
<% if is_logged_in? and logged_in_user.id == @user.id -%>
<%= link_to 'Destroy', photo_path(:user_id => photo.user, :id => photo),
:confirm => 'Are you sure?', :method => :delete %>
<% end %>
<% end -%>
</p>
<% end -%>
错误:
显示照片/ index.html.erb其中第5行提出:
未定义的方法`标题'为#
提取的源(围绕线#5):
2:
3: <% @photos.each_slice(5) do |slice| -%>
4: <% slice.each do %>
5: <h2><%= link_to slice.title,
6: photo_path(:user_id => photo.user, :id => photo) %></h2>
7: <p>
8:
,我试图与修改:
<% rows = @photos.in_groups_of(5)%>
<% rows.each do |row| %>
<tr>
<% row.each do |photo| %>
<td>
<%= image_tag(url_for({:action => 'image', :id => photo.id}),:width => '10%',:height => '10%') %>
</td>
<% end %>
</tr>
<% end %>
错误:
RuntimeError in Photos#index
显示照片/索引.html.erb在哪里行#6提出:
名为id的零,这将被错误地4 - 如果你真的想零的ID,请使用OBJECT_ID
提取的源(大约6号线):
3: <tr>
4: <% row.each do |photo| %>
5: <td>
6: <%= image_tag(url_for({:action => 'image', :id => photo.id}),:width => '10%',:height => '10%') %>
7: </td>
8: <% end %>
9: </tr>
是我错了吗?
看起来好像你已经碰到我在原来的答复中提到的问题:
“请注意,如果你没有5张照片上你的最后一行,除非nil
意志array#in_groups_of
它垫你指定一个替代的默认值。“
试试这个:
<tr>
<% row.each do |photo| %>
<td>
<% if photo %>
<%= image_tag(url_for({:action => 'image', :id => photo.id}),:width => '10%',:height => '10%') %>
<% end %>
</td>
<% end %>
</tr>
哈哈现在我明白你的意思谢谢你的回答 – 2009-08-07 07:12:14
我进行了修改:
<% rows = @photos.in_groups_of(5)%>
<% rows.each do |row| %>
<tr>
<% row.each do |photo| %>
<td>
<% if photo do %>
<%= image_tag(url_for({:action => 'image', :id => photo.id}),:width => '10%',:height => '10%') %>
<% end %>
</td>
<% end %>
</tr>
<% end %>
结果:
SyntaxError in Photos#index
Showing photos/index.html.erb where line #15 raised:
compile error
D:/Rails/rails_apps/pameran_teknologi/app/views/photos/index.html.erb:15: syntax error, unexpected $end, expecting kEND
Extracted source (around line #15):
12: <% end %>
13:
but if i modify like this :
<% row.each do |photo| %>
<td>
<% if photo %> // without 'do'
<%= image_tag(url_for({:action => 'image', :id => photo.id}),:width => '10%',:height => '10%') %>
<% end %>
</td>
<% end %>
结果:
alt text http://kuyarails.jimdo.com/s/cc_images/cache_1636419413.jpg?t=1249628156
我想每行5个图片..但不是工作 – 2009-08-07 06:59:04
我在这里改变了代码一点点
slice.each do |photo|
# photo.name, photo.title...
end
方式更好的答案比我想(用each_with_index和MOD 5)。很干净! – mixonic 2009-08-06 13:20:45
仍然错误!如果我使用each_with_index作为例子,我该如何输入? – 2009-08-06 19:06:10
你能更具体地了解这个错误吗?它与Array#in_groups_of没有直接关系,然后是Array#each_with_index(我提到的'两种方法'中的第二个;))可能无法帮助你! – 2009-08-07 02:01:03