Chiedo scusa per l’oggetto non molto chiaro, ma non riesco a
sintetizzare meglio.
In un’applicazione Rails ho il codice seguente:
def index
params.merge!(:include => [ :appointment => :patient ])
@receipts = Receipt.find(:all, options_from_query_params(params))
respond_to do |wants|
wants.html { }
wants.js { render :text => @receipts.to_flexigrid_json(
:field_order => [ :receipt_nr, :created_at, “patient.fullname”, :totale,
:bollo, :note ] ) }
end
end
La riga che mi dà problemi è: params.merge!(:include => [
:appointment => :patient ])
Ho provato anche con: params[:include] = [ :appointment => :patient ] e
la cosa non cambia (e non vedo perchè dovrebbe, aggiungerei).
Se metto un “puts params.inspect” mi ritrovo il seguente risultato:
{“action”=>“index”, “controller”=>“receipts”,
“include”=>[{“appointment”=>:patient}]}
Ovvero :appointment è stato convertito in stringa pur essendo passato
come symbol.
Questa cosa manda a rotoli la successiva chiamata “Receipt.find(:all,
…” che fà uso del codice seguente:
def options_from_query_params(params = {})
return params if params.empty?
page = params[:page].blank? ? 1 : params[:page].to_i
limit = params[:rp].blank? ? 1 : params[:rp].to_i
offset = (page-1) * limit
sortname = params[:sortname].blank? ? “id” : params[:sortname]
sortorder = params[:sortorder].blank? ? “asc” : params[:sortorder]
ordering = sortname + " " + sortorder
# Da rivedere e ripulire
qfilter = params[:qfilter].blank? ? "" : params[:qfilter]
qtype = params[:qtype].blank? ? "" : params[:qtype] + " like ? "
query = params[:query].blank? ? "%" : "%" + params[:query] + "%"
qtype = qfilter.blank? ? qtype : qfilter + ( qtype.blank? ? "" : "
and " + qtype)
associations = params[:include].blank? ? [] : params[:include]
{ :include => associations, :limit => limit, :offset => offset,
:order => ordering, :conditions => [qtype, query] }
end
Magari è una cosa banale, ma non riesco a trovare l’errore.
Rails si limita a segnalare un:
NoMethodError in ReceiptsController#index
You have a nil object when you didn’t expect it!
The error occurred while evaluating nil.name
Imputando la colpa alla riga:
@receipts = Receipt.find(:all, options_from_query_params(params))
Cosa posso controllare?
Grazie in anticipo per il Vs aiuto