[ruby-it] Aprire una nuova finestra del browser dal controller

Pietro Giorgianni giorgian a gmail.com
Lun 1 Feb 2010 14:39:27 CET


Il 01 febbraio 2010 13.39, Sam Pei <tex---74 a libero.it> ha scritto:
> 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.

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


More information about the Ml mailing list