…e la relativa azione del controller risulta così:
def arg @questions = Question.find_all_by_admin_id(session[:admin_id],:order
=> ‘pubblica asc, id asc’)
respond_to do |format|
format.html # arg.html.erb
format.xml { render :xml => @questions }
end
end
Non capisco perchè non mi funziona. L’azione index del controller è
implementata in modo identico, eppure quella funziona.
L’azione “arg” invece non funziona per niente.
Idee a riguardo ?
PS. L’errore che mi segnala è: “Couldn’t find Question with ID=arg”
Quando fai delle richieste nel browser, nella console vengono stampate
delle cose. Quello è il log, lo stesso che trovi in
log/development.log.
Copia e incolla nell’email la parte relativa alla chiamata che
genera l’errore.
così, a naso, direi che in routes.rb qualcosa non va.
Lancia il comando ‘rake routes’ e controlle che l’azione arg ci sia.
Se non c’è la devi impostare nel file routes.rb
In questo modo funziona, ma qual è il significato del parametro
aggiuntivo ?
E poi, ogni volta che creo una nuova azione devo intervenire sul file
routes.rb ?
Da una certa versione di rails in poi, (non ricordo quale) è stato
introdotto il concetto di ‘risorse’.
Se un controller è definito come ‘risorsa’, allora non puoi aggiungere
azioni liberamente come hai fatto con l’azione ‘arg’.
L’azione ‘index’ funzionava perchè rientra nelle azioni default delle
risorse.
La modifica la file routes.rb è necessaria quando, lavorando con una
risorsa, le azioni default non coprono i tuoi bisogni.