Ciao a tutti,
Mi presento, sono un nuovo iscritto a questa mailing list, la mia
giornata lavorativa consiste nell’usare il linguaggio java per lo
sviluppo di gestionali.
Recentemente ho seguito qualche presentazione di Rails e mi è venuta
voglia di provarlo, anche se purtroppo non ho nessun progetto in
cantiere con questo framework.
Sto leggendo “Agile Web D. with Rails” e ho iniziato a leggerlo
senza avere la minima conoscenza di ruby, però il libro sembra fatto
abbastanza bene e per ora (pag 82) non ho avuto alcun problema.
Però ho qualche problema con Rails.
Sto facendo l’esempio del Books Online Store e non riesco a visualizzare
lo unit_price. Mi spiego meglio ho questa schermata qua:
<h1>Display Cart</h1>
<table>
<%
for item in @items
product = item.product
-%>
<tr>
<td><%= item.quantity %></td>
<td><%= h(product.title) %></td>
<td><%= item.unit_price %></td>
</tr>
<% end -%>
</table>
Però la terza riga causa un errore che porta webrick a mostrarmi una pagina
di errore con scritto “We’re sorry, but something went wrong.”, che per
un programmatore è assolutamente inutile, si può far visualizzare lo
stacktrace ?
Comunque togliendo la riga dello item.unit_price tutto funziona
correttamente.
Questo è lo store_controller:
class StoreController < ApplicationController
def index
@products = Product.salable_items
end
def add_to_cart
render :action => ‘ciao’
end
def add_to_cart
product = Product.find(params[:id])
@cart = find_cart
@cart.add_product(product)
redirect_to(:action => ‘display_cart’)
end
def display_cart
@cart = find_cart
@items = @cart.items
end
private
def find_cart
session[:cart] ||= Cart.new
end
end
Questa è la classe LineItem:
class LineItem < ActiveRecord::Base
belongs_to :product
def self.for_product(product)
item = self.new
item.quantity = 1
item.product = product
item.unit_price = product.price
item
end
end
Qeusta invece è la classe Cart:
class Cart
attr_reader :items
attr_reader :total_price
def initialize
@items = []
@total_price = 0.0
end
def add_product(product)
@items << LineItem.for_product(product)
@total_price += product.price
end
end
Il nome della colonna è uguale a quella su db (mysql 5) e sono entrambe
dello stesso tipo DECIMAL(10, 2). Sono su Ubuntu 7.04 e sto usando JRuby
1.0.1 presente su Netbeans 6 beta.
Quando provo a far partire in debug l’applicazione, Netbeans mi dice che
JRuby non supporta il debug, è normale ? Mi pare strano …
Un’altra cosa strana è che non riesco a cancellare elementi, l’action
destroy, generata automaticamente non esegue la cancellazione ma non
causa nessun errore, semplicemente non succede nulla.
Questa è l’action “incriminata”:
def destroy
Product.find(params[:id]).destroy
redirect_to :action => ‘list’
end
e questo il link all’action della pagina rhtml:
<%= link_to ‘Destroy’, { :action => ‘destroy’, :id => product },
:confirm => “Are you sure?” %>
Son certo di essere stato prolisso, scusatemi ma avevo molti dubbi,
grazie a tutti in anticipo,
–gm
