2010-12-14 15 views
2

ich versuche, ein modales Fenster (mit jquery ui Dialog) zu dem Benutzer von meinem Controller zu zeigen.Launch modal von Controller

Zum Beispiel:

def create 
    if params[:id] 
    #do something 
    else 
    #show a modal window with a partial as content 
end 

Thx für Ihre Hilfe =)

+0

Wie Sie Ihre create-Aktion aufrufen, durch Ihre submit oder durch eine Javascript-Methode – shingara

+0

Ich verwende eine submit. – Flyingbeaver

+0

willst du es so 'if @valid_attributes dann speichern und weiterleiten sonst rendern neu und modale form anzeigen' ?? – Rohit

Antwort

1

Dies ist eine Lösung, aber wahrscheinlich

-Controller

def create 
    if params[:id] 
    #true code 
    else 
    render :new 
    @dialog = true 
    end  
end 

auf Sie für Sie neue arbeiten .html.erb

<% if @dialog %> 
    <%= #dialog code %> 
<% else %> 
    <%= #normal code %> 
<% end %> 

Ich hoffe, es funktioniert.

UPDATE

Wenn das, was ich fragte Sie in Kommentar korrekt ist, dann können Sie das tun

in Ihrem new.html.erb Sie können dies tun,

<% form_for @product do |f| %> 
    <% if @product.errors %> 
    <%= #dialog code %> 
    <% end %> 
<% end %> 
+0

Hallo, danke für die Antwort. Ich habe diese Lösung bereits gefunden, aber ich wollte einen eleganteren Ansatz finden. – Flyingbeaver

0

Sie können ein jQuery nicht mehr anzeigen Dialog von einem Controller, weil Sie JavaScript auf Serverseite nicht ausführen können. Am nächsten kommt es, wenn Sie eine JavaScript-Zeichenfolge zurücksenden, die auf der Client-Seite ausgewertet wird, aber das ist sehr schlecht. Ihre beste Wette ist, etwas auf der Serverseite abzuschliessen und Ihren Dialogcode auf der Klientenseite zu tun. Wenn Sie in Ihren Erb-Templates keinen JavaScript-Satz haben möchten, können Sie von dort aus eine Funktion aufrufen oder Ihre Übertragung über AJAX vornehmen und entweder Ihren Handler den Dialog ausführen lassen oder eine js.erb-Vorlage rendern, die beide rendern kann Partials und JavaScript. Lassen Sie mich wissen, wenn Sie ein Beispiel für eines der oben genannten möchten, und ich werde sehen, ob ich eins zur Verfügung stellen kann.

+0

Nun, ich bin daran interessiert, den saubersten Weg zu sehen, dies zu tun, und auch DRYest Weg :) thx für Ihre Zeit – Flyingbeaver

Verwandte Themen