Я пользовался этим сайтом много раз, чтобы найти свой ответ, но я, к сожалению, сейчас застрял и мне нужна помощь.На моей главной странице контента я работаю над тем, чтобы столкнуться с проблемой создания таблиц с использованием CSS и идентификаторов.
Обзор
Таблица разбита на 2 строки и 6 столбцов, а затем разбита на 12 блоков, каждый из которых 200px X 200px.Теперь содержимое каждого блока содержит новый элемент (@books), который генерируется из отдельного контроллера (используется встроенная команда generate scaffold).Я также использую нумерацию страниц, чтобы ограничить элементы на странице (12), поэтому старые элементы просто возвращаются назад.
Проблема
Я могу заполнить каждое из 12 полей новым содержимым, используя следующий код на моем контроллере, и просмотреть
controller
def content
@books= Book.paginate(:page => params[:page], :per_page => 12)
respond_to do |format|
format.html # content.html.erb
end
view {content.html.erb}
<% @books.each do |book| %>
<div id="column1">
<tr>
<td><%= book.name %></td>
<td><%= book.title %></td>
<td><%= book.content %></td>
<td><%= link_to 'Show', book %></td>
</tr>
</div>
<% end %>
<br />
<div id="paginate">
<%= will_paginate(@books,
) %)
</div>
</div>
Что происходит, когда я генерирую представление, так это то, что все отрисовывается идеально, но все мои книги используют один и тот же «столбец 1»
<div id="column1">
<tr>
<td>Title</td>
<td>Name</td>
<td>Content</td>
<td><a href="/books/4d376fc63060da4abc000002">Show</a></td>
</tr>
</div>
<div id="column1">
<tr>
<td>Title </td>
<td>Name</td>
<td>Content</td>
<td><a href="/books/4d3c96383060da31c9000001">Show</a></td>
</tr>
</div>
Я бы хотел, чтобы у каждой книги был свой собственный столбец {2, 3,4, ... 12}, чтобы я мог ориентироваться на каждую по отдельности, если мне нужно использовать jquery.Другая проблема заключается в том, что я хотел бы использовать частичную визуализацию для всего, но когда я использую частичную визуализацию, он помещает все элементы в 1 столбец {relisting of Book.all}, поэтому он просто повторяет всю содержащуюся информацию.У меня есть ощущение, что я предполагаю использовать другой метод или отредактировать текущий, чтобы завершить это, но я не уверен, что получилось.Спасибо!
greenz
Обновление
Привет, Майк, я действительно ценю твои усилия, пытаясь объяснить новичку, что происходит.Я в основном вернулся к первому шагу, применив каждый фрагмент кода, чтобы увидеть, куда он движется.Вы проделываете замечательную работу, объясняя проблему, но я не могу понять, что происходит при рендеринге кода, потому что документы ruby для рендеринга и макета довольно просты, и у меня нет примеров, где я могу увидеть, как тег div_for влияет на процесс рендеринга (Я визуальный человек).Я хотел показать вам новый код, но комментарии не позволяют его, поэтому я открыл ответ: (
Первым редактированием было удаление
<% @books.each do |book| %>
и замена на
<table>
render @books
</table>
так что теперь мой код выглядит следующим образом {content.html.erb}
<div id="maincontent">
<table>
render @books
</table>
<div id ="column1">
<tr>
<td><%= book.name %></td>
<td><%= book.title %></td>
<td><%= book.content %></td>
<td><%= link_to 'Show', book %></td>
</tr>
</div>
<% end %>
<br />
<div id="paginate">
<%= will_paginate(@books,
) %>
</div>
</div>
Когда это применяется, я получаю неожиданную ошибку завершения при рендеринге представления, указывающего на последнюю строку моего кода. (При добавлении конечного тега в конец он просто выдавал еще одну ошибку). Затем я изменил страницу рендеринга с _bookcontent.html.erb на _book.erb и вставил частичное между столбцом column1, как показано.
<div id ="column1">
<%= render :partial => "book" %>
</div>
<% end%>
Я понимаю, что этот тег сейчас делает, говоря моему частичному, что для каждой "книги" визуализируют последний идентификатор книги из базы данных. Так что теперь оператор render @books сохраняетотслеживание идентификатора книги для каждой страницы рендеринга, которую я вставляю (я могу ошибаться, но это то, как я это воспринимаю). Итак, теперь на печально известный _book.erb, который эта страница отображает здесь, находится мой код.
<% div_for(book) do %>
<tr>
<td><%= book.name %></td>
<td><%= book.title %></td>
<td><%= book.content %></td>
<td><%= link_to 'Show', book %></td>
</tr>
<% end %>
ФроМое чтение в <% div_for (book) do%> заключает в себе уникальный идентификатор div вокруг каждой книги, такой как
<div id="book_123"> Book.name / Book.Title </div>
. Этот div теперь содержится внутри моего идентификатора div column1, до которого есть все моистиль для моей колонки / коробки.Из-за отсутствия информации о теге div_for я все еще сталкиваюсь с ошибками и неожиданными концами в моем коде.(Попытка отладки _book.erb с помощью ruby -w не работает, поэтому я не знаю, как использовать конечные теги).Это то, что я пытаюсь исправить для моего здравомыслия.
Должен ли я удалить <div id="column1">
со своей страницы контента и применить новый идентификатор / класс div в другом месте на моей странице контента?
Гдевставить теги <% end%> один в частичное и в мой content.html.erb перед моим разбиением на страницы?Кажется, что когда у меня есть оба, рендерер жалуется на неожиданные концы в конце каждой страницы.
При замене вашего кода вместо мин я получаю неожиданный конец, но это не из-за того, что вы определенно пропустили компонент в моем коде.
Во-первых, я мог бы подойти к этому неверно с точки зрения восприятия макета, но моя главная цель - получить 2 строки по 6 блоков / столбцов с каждым блоком, содержащим отдельную книгу,Затем с помощью нумерации страниц перейдите к предыдущим книгам и примените тот же макет, что и сейчас, но я использую один и тот же идентификатор столбца для каждой книги, и мне нужно настроить таргетинг на все поля отдельно.