Управление Picture @ view - PullRequest
       10

Управление Picture @ view

1 голос
/ 06 августа 2009

у меня есть такой код:

<% 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 изображений в строке выход: [Изображение] [изображение] [изображение] [изображение] [изображение]

что мне делать с моим кодом ?? пожалуйста, помогите мне

Ответы [ 6 ]

3 голосов
/ 06 августа 2009

Существует несколько способов решения проблемы «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, если вы не укажете альтернативное значение по умолчанию.

1 голос
/ 07 августа 2009

вы можете сделать что-то вроде этого

@photos.each_slice(5) do |slice|
   slice.each do |photo|
     # render photo.name, photo.title...etc here
   end
end
0 голосов
/ 07 августа 2009

Я немного изменил код здесь

slice.each do |photo|
   # photo.name, photo.title...
end
0 голосов
/ 07 августа 2009

я был изменен:

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

результат:

альтернативный текст http://kuyarails.jimdo.com/s/cc_images/cache_1636419413.jpg?t=1249628156

0 голосов
/ 07 августа 2009

Похоже, вы столкнулись с проблемой, о которой я упоминал в своем первоначальном ответе:

«Имейте в виду, что если у вас нет 5 фотографий в последнем ряду, array#in_groups_of дополнит его nil, если вы не укажете альтернативное значение по умолчанию."

Попробуйте это:

<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 голосов
/ 07 августа 2009
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:

неопределенный метод title для #

Извлеченный источник (около строки № 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

Показаны фотографии / index.html.erb, где поднята строка # 6:

Вызывается id для nil, который по ошибке будет равен 4 - если вы действительно хотите id nil, используйте 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>

я был не прав?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...