7.3.3 Боковая панель пользователя
Хотя наши тесты в настоящее время проходит, и страница пользователя значительно улучшилась, все же хорошо бы ее еще немного отполировать. В Листинге 7.25, у нас есть таблица в table
теге с одной строкой (tr
) и двумя ячейками (td
).25
show
представлению. app/views/users/show.html.erb
<table class="profile" summary="Profile information">
<tr>
<td class="main">
<h1>
<%= gravatar_for @user %>
<%= @user.name %>
</h1>
</td>
<td class="sidebar round">
<strong>Name</strong> <%= @user.name %><br />
<strong>URL</strong> <%= link_to user_path(@user), @user %>
</td>
</tr>
</table>
Здесь мы использовали HTML тег перевода строки <br />
чтобы разделить имя пользователя и URL. Также обратите внимание на использование user_path
для создания кликабельной ссылки позволяющей пользователям легко обмениваться URL своих профайлов. Это лишь один из многих именованных маршрутов (Раздел 5.2.2) связанных с ресурсом User (Листинг 6.26); мы увидим много больше в следующих главах. Код
user_path(@user)
возвращает путь к пользователю, в данном случае /users/1. Связанный код
user_url(@user)
просто возвращает весь URL, //localhost:3000/users/1. (Сравните с маршрутами созданными в Разделе 5.2.2.) Оба примера именнованных маршрутов созданы ресурсом пользователей в Листинге 6.26; список всех именованных маршрутов представлен в Таблице 7.1.
Named route | Path |
---|---|
users_path | /users |
user_path(@user) | /users/1 |
new_user_path | /users/new |
edit_user_path(@user) | /users/1/edit |
users_url | //localhost:3000/users |
user_url(@user) | //localhost:3000/users/1 |
new_user_url | //localhost:3000/users/new |
edit_user_url(@user) | //localhost:3000/users/1/edit |
Отметим, что в
<%= link_to user_path(@user), @user %>
user_path(@user)
это текст ссылки, в то время как адрес это просто @user
. В контексте link_to
, Rails преобразует @user
в соответствующий URL; другими словами, код выше эквивалентен коду
<%= link_to user_path(@user), user_path(@user) %>
В любом случае хорошо работает, но, как и в :id => @user
идиоме из Листинга 7.17, использование просто @user
это общепринятая Rails конвенция. В обоих случаях, Embedded Ruby производит HTML
<a href="/users/1">/users/1</a>
С HTML элементами и CSS классами, мы можем отстилить show страницу с CSS показанным в Листинг 7.26. Получившаяся страница показана в Рис. 7.7.
public/stylesheets/custom.css
.
.
.
/* User show page */
table.profile {
width: 100%;
margin-bottom: 0;
}
td.main {
width: 70%;
padding: 1em;
}
td.sidebar {
width: 30%;
padding: 1em;
vertical-align: top;
background: #ffc;
}
.profile img.gravatar {
border: 1px solid #999;
margin-bottom: -15px;
}