Ror cz. 3 – kontrolery i widoki

Potrzebujemy kontroler i widoki, żeby obsłużyć nowy model. Wygenerujmy kontroler:

rails g controller Authors

Ale to jest pusty kontroler bez żadnej akcji.

Możemy wygenerować:

rails g controller Authors index new create

Teraz mamy kontroler ze szkieletem 3 akcji i 3 puste widoki odpowiadające tym akcjom.

Możemy wygenerować cały CRUD:

rails g controller Authors index new create edit update show destroy

Ale możemy wygenerować cały CRUD razem z widokami za jednym zamachem:

rails g scaffold Author name: string surname:string

Teraz mamy ciała metod w kontrolerze, gotowe widoki i dodany wpis do pliku: routes.rb

resources :authors

Co załatwia nam routing adresów. Do routingu wrócę w jednym z kolejnych wpisów.

Index

W kontrolerze, metoda index wygląda tak:

def index
   @authors = Author.all
end

I nie potrzebuję jej zmieniać.

Widok views/authors/index.html.erb po wygenerowaniu:

<p id="notice"><%= notice %></p>

<h1>Authors</h1>

<table>
<thead>
<tr>
<th>Name</th>
<th>Surname</th>
<th colspan="3"></th>
</tr>
</thead>

<tbody>
<% @authors.each do |author| %>
<tr>
<td><%= author.name %></td>
<td><%= author.surname %></td>
<td><%= link_to 'Show', author %></td>
<td><%= link_to 'Edit', edit_author_path(author) %></td>
<td><%= link_to 'Destroy', author, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>

<br>

<%= link_to 'New Author', new_author_path %>

A zmieniam go na:

<h3>Authors</h3>

<p><%= link_to "New author", new_author_path, class: "btn btn-success" %> </p>

<table class="table table-stripped">
<thead>
<tr>
<th>Name</th>
<th>Surname</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<% @authors.each do |author| %>
<tr>
<td><%= author.name %></td>
<td><%= author.surname %></td>
<td>
<%= link_to "Show", author_path(author), class: "btn btn-default btn-xs" %>
<%= link_to "Edit", edit_author_path(author), class: "btn btn-primary btn-xs" %>
<%= link_to "Delete", author_path(author), method: :delete, class: "btn btn-danger btn-xs", data: { confirm: "Are you sure?" } %>
</td>
</tr>
<% end %>
</tbody>
</table>

Czyli korzystam z bootstrapa, a link tworzenia nowego autora przeniosłem na górę. Usunąłem też ’notice”, ale do tego wrócę w kolejnej części, kiedy zajmiemy się dodawaniem/edycją autora

Jeden komentarz do “Ror cz. 3 – kontrolery i widoki”

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.