<h1>Listing categories</h1>
<table>
<thead>
<tr>
<th>Name</th>
<th>Thumburl</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @categories.each do |category| %>
<tr>
<td><%= category.name %></td>
<td><%= category.thumburl %></td>
<td><%= link_to 'Show', category_path(category) %></td>
<td><%= link_to 'Edit', edit_category_path(category) %></td>
<td><%= link_to 'Destroy', category, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
Как работает ссылка в документе html.erb?
<%= link_to 'New Category', new_category_path %>
Итак, как я уже говорил в моем последнем посте я пытаюсь пройти через Руби код, как я нахожу его на RoR учебник Codecademy в. Поскольку у них есть такой простой учебник, я полагаю, было бы смешно не понимать все, что они бросают на меня.
В этом бите у них есть файл html.erb, который должен формировать отображаемый вид. Мне все кажется ясным, пока они не доберутся до <tbody>
.
Здесь, во-первых, мы повторяем переменную экземпляра @categories ... now, где эта переменная экземпляра найдена, я не знаю. Я думал, что переменные экземпляра означают, что они могут использоваться только в определенном классе, но это страница разметки, т. Е. Классы не определены, так как Ruby знает, где и что такое переменная этого экземпляра?
Далее: так, как я понимаю, слово «категория» здесь служит переменной, поскольку оно было указано как таковое синтаксисом канала двумя строками ранее. Теперь, можно ли использовать эту переменную за пределами этой страницы html.erb вне меня, потому что я думал, что переменные экземпляра были обозначены символом «@». С помощью этой переменной мы вызываем метод 'name'. Итак, «имя» - это настраиваемый метод, и если да, то где он определен?
В настоящее время третий тег <td>
содержит код, который сообщает Ruby, чтобы ссылаться на какое-то имя «Показать», но я не уверен, что это имя указывает на ... также, «category_path» - это метод, который мы определили в нашей routes.rb, и у него есть параметр нашей категории заблокированных переменных.
Наконец, конечные ссылки ряда клеток к некоторому имени «Destroy», но этот синтаксису запятой является то, что я не видел раньше:
<td><%= link_to 'Destroy', category, method: :delete, data: { confirm: 'Are you sure?' } %></td>
http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to – Joel
Категория является переменной содержащий элемент в коллекции @categories, который был бы создан контроллером категорий. Это «существование» на протяжении каждого цикла .do/end. Следующая итерация, это другой элемент из коллекции. Вне цикла он не существует. Помощники пути к категории используют некоторую магию Rails, где, если вы передаете ей объект, а путь требует идентификатора, он использует атрибут ID этого объекта (category.id, а не идентификатор объекта). – railsdog