В настоящее время я изучаю Ruby on Rails с помощью книги "Agile Web Development with Rails", но у меня проблема с первым приложением.
Я создал приложение с помощью rails new depot
и сгенерировал скаффолд с помощью
rails generate scaffold Product \title:string description:text image_url:string price:decimal
Потом я побежал rake db:migrate
Согласно книге, теперь я должен иметь возможность создавать новые продукты, которые затем будут отображаться немедленно. Но при добавлении нового продукта он не отображается при просмотре URL-адреса http://localhost:3000/products
или http://localhost:3000/products.json
. Когда я просматриваю файл базы данных, добавленные продукты присутствуют.
Добавленные продукты отображаются в списке после перезапуска сервера. Кто-нибудь знает, что я сделал не так?
Использование: Rails 3.2.4, Ruby 1.9.3, WEBrick 1.3.1, SQLite 3 и Mac OSX.
РЕДАКТИРОВАТЬ: код, сгенерированный эшафотом:
products_controller.rb
# GET /products
# GET /products.json
def index
@products = Product.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @products }
end
end
index.html.erb
<h1>Listing products</h1>
<table>
<tr>
<th>Title</th>
<th>Description</th>
<th>Image url</th>
<th>Price</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @products.each do |product| %>
<tr>
<td><%= product.title %></td>
<td><%= product.description %></td>
<td><%= product.image_url %></td>
<td><%= product.price %></td>
<td><%= link_to 'Show', product %></td>
<td><%= link_to 'Edit', edit_product_path(product) %></td>
<td><%= link_to 'Destroy', product, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New Product', new_product_path %>