Problem ze scriptletami

Bardzo dziękuję za odpowiedź, błąd zniknął, ale pojawił się inny problem. W szablonie strony wykorzystuję scriptlety. Wygląda to tak:

> <html>
> <head>
> <title>All Ads</title>
> </head>
> <body>
> <h1>All Ads</h1>
> <ul>
> <% for ad in @ads %>
> <li><a href="/ads/<%=ad.id %>"><%= ad.name %></a></li>
> <% end %>
> </ul>
> </body>
> </html>

No i niestety strona pokazuje mi tylko nagłowek, pętla nie działa, nie zostały wczytane żadne rekordy z bazy. Gdzie popełniam błąd?

W tym momencie używa się po prostu Model.all
w Twoim przypadku
@ads=Ad.all

Wyrzuć tę książkę.

Bardzo dziękuję za odpowiedź, błąd zniknął, ale pojawił się inny problem. W szablonie strony wykorzystuję scriptlety. Wygląda to tak:

> <html>
> <head>
> <title>All Ads</title>
> </head>
> <body>
> <h1>All Ads</h1>
> <ul>
> <% for ad in @ads %>
> <li><a href="/ads/<%=ad.id %>"><%= ad.name %></a></li>
> <% end %>
> </ul>
> </body>
> </html>

No i niestety strona pokazuje mi tylko nagłowek, pętla nie działa, nie zostały wczytane żadne rekordy z bazy. Gdzie popełniam błąd?

A nie lepiej zapisać to tak :)?

<% @ads.each do |ad| %>
  <li><a href="/ads/<%=ad.id %>"><%= ad.name %></a></li>
<% end %>

Dziękuję za odpowiedź, ale działa niestety tak samo - wyświetla tylko nagłówek “All Ads”

Jesteś pewien, że w zmiennej @ads znajduje się coś? Bo wygląda to tak ajkby była pusta. Pokaż może metodę kontrollera, który ma uruchomić daną templatkę.

Kontroler wygląda tak:

class AdsController < ApplicationController
def show
@ad=Ad.find(params[:id])
end
def index
@ads=Ad.all
end
end

W książce jest napisane, żeby ściągnąć ze strony Helionu pliczek development.sqlite3 i umieścić go w folderze db - tak też zrobiłem - wygląda na to, że jest jakiś problem z odczytem z bazy danych

Najprawdopodobniej.

Proponuję zakasać rękawy i przejrzeć chociaż udostępniony fragment https://www.railstutorial.org/book - ja się z niej uczyłem i choć nie jest może najlepszą książką na pewno poprowadzi cię przez stworzenie aplikacji od zera.

Dziękuję za odpowiedź, wiem że ta książka jest najlepsza - mam ją już kupioną, ale chciałem przerobić najpierw tą. Sprawa wygląda tak: tworzę aplikację, model, kontroler, odpalam rake db:migrate i wtedy - według książki - mam podmienić plik w katalogu db. Tak więc robię, ale gdy chcę wejść na stronę, dostaję komunikat: Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=development
Gdy to odpalam, mam błąd - tabela “ads” już istnieje. Ma ktoś może jakiś pomysł?

Tak. Problem leży w tym, że w bazie jest tabela ads, natomiast w tabeli schema_migration nie ma informacji o tym, że migracja ta została wykonana. Jeśli usilnie chcesz to przerobić Może zrób zrzut danych z tabel w tamtej bazie danych i wczytaj je do swojej. Niestety z SQLite nie pomoge ci bo w zasadzie nigdy z niej nie korzystałem dłużej niż 5 minut.

Dziękuję jeszcze raz, ale czemu jest aż tak duży problem z podmianą bazy? Wydawałoby się to przecież taką podstawową sprawą?

Nie mam pewności. Może ktoś z większym doświadczeniem by wiedział.

Mi wydaje się, że książka, z której korzystasz omawia starszą wersję Railsów niż ty posiadasz stąd mogą być rozbieżności. Ale nie znając szczegółów jest to wróżenie z fusów kawy, którą właśnie zrobiłem.

Bardzo często spotkasz się z tym, że kurs/książka są przestarzałe ponieważ w świecie Rubiego wszystko bardzo szybko się zmienia i ewoluuje i trzeba najczęściej samemu nadrabiać różnice. Z drugiej strony szybki rozwój przyciąga wiele osób, które wykorzystują railsy.