2010-12-14 15 views
2

私のコントローラーからユーザーにモーダルウィンドウ(jquery UIダイアログを使用)を表示しようとしています。例えばコントローラーからモーダルを起動する

:あなたの助けを

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

Thxを=)

+0

あなたの送信アクションまたはJavaScriptのメソッドを呼び出す方法 – shingara

+0

私は送信を使用します。 – Flyingbeaver

+0

このようにしたいですか?もし@valid_attributesが次に保存してリダイレクトすると、新しいレンダリングを表示し、モーダルフォームを表示しますか? – Rohit

答えて

1

これは修正ですが、おそらく新しいであなた

コントローラ

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

のために動作します.html.erb

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

希望します。

UPDATE

私はコメントであなたを尋ねたことは正しいなら、あなたはあなたのnew.html.erbあなたはjQueryのを表示することはできません。この

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

こんにちは、答えのためのthx。私はすでにこの解決策を考え出しましたが、より洗練されたアプローチを探したかったのです。 – Flyingbeaver

0

を行うことができ、この

を行うことができますサーバーサイドでJavaScriptを実行することができないため、コントローラからのダイアログこれに最も近いのは、クライアント側で評価されるJavaScript文字列を返すことですが、これは非常に悪い習慣です。あなたの最善の策は、サーバー側で何かキーを押して、クライアント側でダイアログコードを実行することです。あなたのerbテンプレートにたくさんのJavaScriptが必要ない場合は、そこから関数を呼び出すことができます。または、AJAXを介して送信し、ハンドラにダイアログを表示させるか、または両方をレンダリングできるjs.erbテンプレートをレンダリングさせることができます部分的なこととJavaScriptを行う。上記のいずれかの例が必要な場合はお知らせください。私が提供できるかどうかがわかります。

+0

まあ、私はこれを行うための最もクリーンな方法を見て興味があり、またDRYest方法:)時間のためのTHX – Flyingbeaver

関連する問題