2009-08-06 94 views
1

我有這樣的代碼:管理優化@視圖

<% 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圖像 輸出: [圖像] [圖像] [圖片] [圖片] [圖片]

我該怎麼處理我的代碼?請幫我

回答

3

有幾個方法,你可以解決「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_ofnil意志墊,除非你指定替代默認。

+0

方式更好的答案比我想(用each_with_index和MOD 5)。很乾淨! – mixonic 2009-08-06 13:20:45

+0

仍然錯誤!如果我使用each_with_index作爲例子,我該如何輸入? – 2009-08-06 19:06:10

+0

你能更具體地瞭解這個錯誤嗎?它與Array#in_groups_of沒有直接關係,然後是Array#each_with_index(我提到的'兩種方法'中的第二個;))可能無法幫助你! – 2009-08-07 02:01:03

1

你可以做這樣的事情

@photos.each_slice(5) do |slice| 
    slice.each do |photo| 
    # render photo.name, photo.title...etc here 
    end 
end 
0
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> 

是我錯了嗎?

0

看起來好像你已經碰到我在原來的答覆中提到的問題:

「請注意,如果你沒有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> 
+0

哈哈現在我明白你的意思謝謝你的回答 – 2009-08-07 07:12:14

0

我進行了修改:

<% 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

+0

我想每行5個圖片..但不是工作 – 2009-08-07 06:59:04

0

我在這裏改變了代碼一點點

slice.each do |photo| 
    # photo.name, photo.title... 
end