Forum: Italian Ruby user group Aprire una nuova finestra del browser dal controller

Posted by Sam Pei (sampei)
on 2010-02-01 13:39
Salve a tutti.

Secondo voi si puo' aprire una nuova finestra del browser dal
controller?

Mi spiego meglio.

So che posso aprire un collegamento in una nuova finestra mettendo
:popup => true in link_to.

Ma questo si fa nella view.

Invece io dovrei farlo dal controller.

In pratica se si verifica una certa condizione il controller dovrebbe
aprire una nuova finestra e poi dovrebbe continuare a fare quello che
deve fare nella finestra originaria.

Ogni suggerimento è bene accetto.
Posted by Pietro Giorgianni (giorgian)
on 2010-02-01 14:40
(Received via mailing list)
Il 01 febbraio 2010 13.39, Sam Pei <tex---74@libero.it> ha scritto:
> Ma questo si fa nella view.
>
> Invece io dovrei farlo dal controller.
>
> In pratica se si verifica una certa condizione il controller dovrebbe
> aprire una nuova finestra e poi dovrebbe continuare a fare quello che
> deve fare nella finestra originaria.
>
> Ogni suggerimento è bene accetto.

Dovrebbe essere sufficiente far ricevere al browser una cosa tipo:
<script type="text/javascript">
    //<![CDATA[
    var mywin = window.open(url, title, options);
    //]]>
</script>

Credo però ci sia un po' di confusione: chi fa il render della
response (scusa itanglese, ma i termini sono quelli) è la view; lo fa
utilizzando i dati che riceve dal controller, quindi nel controller
potresti scrivere:

def nome_dell_action
  ...
  @apri_il_popup_che_sai_tu = (una certa condizione che dà true o false)
end

la view conterrà quindi:

<% if @apri_il_popup_che_sai_tu %>
  <%= helper_che_mostra_il_popup opzioni_per_l_helper %>
<% end %>

Se questa cosa deve avvenire in tutte le view (o comunque in molte),
puoi valutare se inserire questo pezzo nel layout anziché nella view.


Spero di essere stato d'aiuto; se hai altri dubbi, chiedi pure.


pietro
Posted by Andrea Pavoni (apeacox)
on 2010-02-01 15:26
(Received via mailing list)
On 01/02/2010 14:39, Pietro Giorgianni wrote:
> Se questa cosa deve avvenire in tutte le view (o comunque in molte),
> puoi valutare se inserire questo pezzo nel layout anziché nella view.
>    
aggiungerei che per non incasinare il layout, se devi ripeterlo solo in
alcune parti, a quel punto sarebbe meglio mettere il codice in un
helper, qualcosa tipo:

<%= show_popup(eventuali_argomenti) if @valore_bool %>

ciao,
A.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.