Il giorno 06/feb/2013, alle ore 23:54, Luigi M.
[email protected] ha scritto:
Vi ringrazio ancora per il tempo che mi state dedicando ma, purtroppo,
per mia incompetenza non riesco a capire la vostra soluzione in
particolare non ho capito come poter utilizzare la soluzione di Ju.
mi permetto di consigliarti che, magari, il caso di studiare ruby un
po’ di pi, almeno per riuscire a capire/usare quelle 20 righe di codice
Vorrei far presente che la mia web app (software-windows.net) gira su
ruby 1.8.6 e rails 2.0.2.
sono versioni molto datate (~2007) e non pi supportate, probabile che
molti consigli/guide/gemme non possono essere applicati :-/
ovviamente non il caso degli acronimi, per giusto per avvisarti
Nel tentativo di creare una subroutine comune ho scritto in
application.rb il seguente codice:
attenzione: specifica il percorso completo, perch “application.rb”
troppo ambiguo, ti trovi in config/ o in app/controllers/ ? presumo sia
app/controllers/ perch prima di rails3, se non ricordo male, si chiamava
application.rb anzich application_controller.rb
def acronym_page
@page=Page.find(params[:id])
sostituzione_abbr(@page)
if @page.save
flash[:notice]=‘Acronimi sostituiti.’
redirect_to :action=>‘modifica’,:id=>@page
end
end
ho capito che hai bisogno di sostituire gli acronimi con la loro
descrizione, tuttavia, per curiosit, ti chiedo come mai hai una action
nel controller che applica la sostituzione e salva la pagina
mi viene da pensare che sia un’operazione una-tantum (dopo la prima
volta, gli acronimi sono gi sostituiti e salvati su db). forse ti
conveniva scrivere un task Rake o farlo a manina dalla console di rails.
il problema a questo punto che in application.rb devo, per far
funzionare la subroutine, necessariamente agganciare direttamente la
“colonna” description con il comando item.description.
Scrivo: “necessariamente” perch se la passo direttamente come variabile
attraverso la chiamata:
sostituzione_abbr(@page.description)
non funziona!
non funziona perch se passi il “valore” di @page.description non vai a
modificare la colonna di @page, ma solo la stringa ‘as-is’.
in alternativa, puoi fare qualcosa del genere:
def sostituzione_abbr(text)
text.gsub(/ PPC /," <acronym title=#{34.chr}Pocket
PC#{34.chr}>PPC ")
.
return text
end
def acronym_page
@page=Page.find(params[:id])
@page.description = sostituzione_abbr(@page.description)
…
end
abbastanza brutto da scrivere e sicuramente si possono adottare
soluzioni pi pulite, ma dovrebbe funzionare
Se funzionasse avrei risolto tutti i miei problemi perch potrei
richiamare in ogni metodo la subroutine in questione sotituendo la
variabile con quella che voglio elaborare.
che vuoi sostituire gli acronimi chiarissimo, non chiaro come/quando
vuoi farlo: modificare articoli esistenti? dopo la creazione? in
fruizione?
ciao,
A.
–