Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переделать код 
V
    Опции темы
Лена
Дата 20.12.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



У меня есть код который выстраивает список товаров в столбик:
Код

<table>
<% for product in @products -%>
  <tr>
     <td><%= image_tag(product.image_url) %></td>
     <td ><h3><%= h(product.title) %></h3><%= (truncate(product.description, 350))%>
     <%= link_to 'Подробнее >>', :action => 'new_window', :id => product %>
     </td>
  </tr>
  
  <tr>
     <td valign="top"><span class="price"><%= number_to_currency(product.price) %></span></td>
     <td>
     <% form_remote_tag :url => { :action => :add_to_cart, :id => product } do %>
      <%= submit_tag "Добавить в корзину" %><hr>
      
    <% end %></td>
  </tr>
<% end %>
 </table>


Как переделать код, чтобы был список в два стобика, а не в один. Я что-то не пойму как это реализовать
PM MAIL   Вверх
source777
Дата 20.12.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



А каким образом должно образоваться 2 столбика:

1 2
3 4
5 6
7 8
.. ..

или

1 i+1
2 i+2
.. ..
i  n

???


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Лена
Дата 20.12.2009, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Цитата(source777 @  20.12.2009,  19:18 Найти цитируемый пост)
А каким образом должно образоваться 2 столбика:

1 2
3 4
5 6
7 8


Мне кажется этот вариант будет наиболее лучше...
PM MAIL   Вверх
source777
Дата 20.12.2009, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



В таком случае тебе надо будет проверять счётчик итераций на чётность, и выводить соответствующий фрагмент вёрстки.
Вёрстку для двух столбиков ты ведь уже подготовила?


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Лена
Дата 20.12.2009, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Цитата(source777 @  20.12.2009,  23:18 Найти цитируемый пост)
Вёрстку для двух столбиков ты ведь уже подготовила? 


Не совсем понимаю. Мне надо создать таблицу с двумя столбиками и в зависимости от четности раставлять данные в строках этой таблицы?
PM MAIL   Вверх
source777
Дата 21.12.2009, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Тебе надо просто определиться с вёрсткой.
Если ты хочешь выводить это в таблице, то тебе нужно будет закрывать </tr> после каждого второго продукта.

P.S. Кстати непонятно, почему у тебя сейчас 2 строчки(tr) на каждый продукт, должна быть только одна, а всё описание продукта должно помещаться внутрь ячейки(td). Ну это есть ты табличную вёрстку предпочитаешь, а не блочную.

Добавлено через 1 минуту и 40 секунд
P.P.S. В любом случае, подготовь сначала вёрстку без привязки к Ruby, просто голый HTML.


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Лена
Дата 21.12.2009, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Цитата(source777 @  21.12.2009,  00:24 Найти цитируемый пост)
Кстати непонятно, почему у тебя сейчас 2 строчки(tr) на каждый продукт, должна быть только одна, а всё описание продукта должно помещаться внутрь ячейки(td). 



Не вижу ошибки. Вот добавила границу для таблицы, чтобы визульно посмотреть для тестирования. Все выглядит как и планировала (см.рис.).
Теперь думаю как переделать стуктуру этой table под два столбика.  smile 

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  table.gif 24,66 Kb
PM MAIL   Вверх
source777
Дата 21.12.2009, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Цитата(Лена @  21.12.2009,  11:24 Найти цитируемый пост)
Не вижу ошибки. Вот добавила границу для таблицы, чтобы визульно посмотреть для тестирования. Все выглядит как и планировала (см.рис.).

Ну если ты так и планировала, то нужно делать таблицу внутри td. Т.к. сейчас у тебя нет никакого элемента, внутри которого содержится всё, что относится к конкретному продукту, а это уже логическая ошибка вёрстки.


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Лена
Дата 21.12.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Цитата(source777 @  21.12.2009,  12:38 Найти цитируемый пост)
а это уже логическая ошибка вёрстки. 



А как все таки наиболее правильно будет решить? Как примерно должен выглядеть html?
PM MAIL   Вверх
source777
Дата 21.12.2009, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Цитата(Лена @  21.12.2009,  15:03 Найти цитируемый пост)
Как примерно должен выглядеть html? 

Ну это уже в другой раздел. 
Если бы я делал нечто подобное, то html выглядел бы примерно так:
Код

<ul class="products">
  <li>
   <!-- а сюда можно уже саму информацию о продукте, хоть таблицей, хоть как угодно -->
  </li>
  <li>
  </li>
...
  <li>
  </li>
</ul>

А остальное в CSS, например:
Код

.products li {
  float:left;
  list-style-type:none;
  width:50%;
}



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Лена
Дата 21.12.2009, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Подскажите а в этой верстке где должна быть строка перебора: <% for product in @products -%>
?
PM MAIL   Вверх
source777
Дата 21.12.2009, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



После <ul class="products">


Код

<ul class="products">
<% for product in @products -%>
  <li><table>
  <tr>
     <td><%= image_tag(product.image_url) %></td>
     <td ><h3><%= h(product.title) %></h3><%= (truncate(product.description, 350))%>
     <%= link_to 'Подробнее >>', :action => 'new_window', :id => product %>
     </td>
  </tr>
  
  <tr>
     <td valign="top"><span class="price"><%= number_to_currency(product.price) %></span></td>
     <td>
     <% form_remote_tag :url => { :action => :add_to_cart, :id => product } do %>
      <%= submit_tag "Добавить в корзину" %><hr>
      
    <% end %></td>
  </tr>
  </table></li>
<% end %>
</ul>



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Лена
Дата 21.12.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Цитата(source777 @  21.12.2009,  22:23 Найти цитируемый пост)
После <ul class="products">


Упорно выстраивается на всех страницах в один столбик...
PM MAIL   Вверх
source777
Дата 21.12.2009, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Цитата(Лена @  21.12.2009,  22:39 Найти цитируемый пост)
Упорно выстраивается на всех страницах в один столбик... 

Используй CSS!!!



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Лена
Дата 21.12.2009, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Цитата(source777 @  21.12.2009,  23:05 Найти цитируемый пост)
Используй CSS!!!


У меня не получается. Вот что вижу в Опере (рис.).
Почему-то пустые места и таблицы разной высоты. smile 

Это сообщение отредактировал(а) Лена - 21.12.2009, 23:36

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  new_1.gif 56,79 Kb
PM MAIL   Вверх
source777
Дата 22.12.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Цитата(Лена @  21.12.2009,  23:23 Найти цитируемый пост)
Почему-то пустые места и таблицы разной высоты

Это у тебя ячейки с текстом описания продукта разной высоты, исправь.


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Лена
Дата 23.12.2009, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Цитата(source777 @  22.12.2009,  13:21 Найти цитируемый пост)
Это у тебя ячейки с текстом описания продукта разной высоты, исправь. 



В общем не получилось у меня красиво разбить. Пока оставила как есть.  smile 
PM MAIL   Вверх
Лена
Дата 26.12.2009, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



В поисках как все таки засунуть все в две колонки таблицы  чтобы все было ровно, был найден такой код:
Код

<table>
  <tr>
     <% for product in @products -%>
         <td><%= image_tag(product.image_url) %></td>
         <h3><%= h(product.title) %></h3>
         <p><%= (truncate(product.description, 350)) %></p>
         <%= link_to 'Подробнее >>', :action => 'new_window', :id => product %>
         <span class="price"><%= number_to_currency(product.price) %></span>
         <% form_remote_tag :url => { :action => :add_to_cart, :id => product } do %>
         <%= submit_tag "Добавить в корзину" %>
         <% end %>
         </td>
         <%= cycle('', '</tr><tr>') unless @products.last == product %>
     <% end %>
  </tr>
 </table>


Однако здесь где-то ошибка... Может есть подсказка?

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  new_1.gif 44,47 Kb
PM MAIL   Вверх
Лена
Дата 28.12.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Вот этот код дал результат. Код работает как надо:
Код

<table class="entry" bgcolor=White cellpadding="5" cellspacing="0" width=80% border=0>
  <% i=0 %>
  <% for product in @products -%>
    <% if (i%2).zero? %>
      <tr  valign=top>
        <td><%= image_tag(product.image_url) %></BR><span class="price"><%= (product.price * @curs.course.to_f).floor %> гр.</span></td>
        <td ><h3><div class=amino><%= h(product.category) %></div><%= h(product.title) %></h3><%= (truncate(product.description, 350))%>
        <%= link_to 'Подробнее >>', :action => 'new_window', :id => product %></BR>
        <% form_remote_tag :url => { :action => :add_to_cart, :id => product } do %>
        <%= image_submit_tag("kor.gif") %>
        <% end %>
        </td>
    <% else %>
        <td><%= image_tag(product.image_url) %></BR><span class="price"><%= (product.price * @curs.course.to_f).floor %> гр.</span></td>
        <td ><h3><div class=amino><%= h(product.category) %></div><%= h(product.title) %></h3><%= (truncate(product.description, 350))%>
        <%= link_to 'Подробнее >>', :action => 'new_window', :id => product %></BR>
        <% form_remote_tag :url => { :action => :add_to_cart, :id => product } do %>
        <%= image_submit_tag("kor.gif") %>
        <% end %>
        </td>
      </tr>
    <% end %>
    <% i+=1 %>
  <% end %>
</table>


Это сообщение отредактировал(а) Лена - 28.12.2009, 22:48
PM MAIL   Вверх
source777
Дата 28.12.2009, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Осталось только отDRYить!  smile 


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Лена
Дата 29.12.2009, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Цитата(source777 @  28.12.2009,  23:58 Найти цитируемый пост)
Осталось только отDRYить!


Это как?  smile 
PM MAIL   Вверх
source777
Дата 29.12.2009, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



это без дублирования кода, см. DRY


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
sunchess
Дата 23.3.2010, 14:15 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 11.1.2007

Репутация: нет
Всего: нет



Смотрите в сторону Array#in_groups_of и не надо велосипеда smile
PM MAIL   Вверх
source777
Дата 23.3.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



sunchess, не надо старые темы откапывать. smile 


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.1086 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.