2012-06-18 10 views
5

私は2つの場所で2つの場所でレシピアプリに2つの場所を使用しています。私が最初にアプリを作ったとき、新しいレシピカードを記入している間に新しい成分を追加できるようにしたいと思っていました。モーダルポップアップとAJAXを使用して新しい成分フォームをポップアップし、完成させ、送信ボタンをクリックするとjQueryはモーダルボックスを隠し、ページ上のいくつかのオプションタグを更新します。Rails - AJAXリクエストと非AJAXリクエストのために同じフォームを使用する

レシピフォームから、私は<%= link_to 'New ingredient', new_ingredient_path, :remote => true %>を使用して成分パーシャルと呼んでいます。マイ成分new.html.erbファイルが部分的にしかへの呼び出しが含まれます。

<%= render 'form' %> 

をそして_form.html.erbは、次のようになります(簡潔にするために切り取ら他のフィールド)

<%= form_for @ingredient, :remote => true do |f| %> 
    <%= render 'shared/ingredient_error_messages' %> 
    <div class="field"> 
     <%= f.label :name %> 
     <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
     <%= f.label :amount %> 
     <%= f.text_field :amount%> 
    </div> 
    <div class="actions"> 
     <%= f.submit "Save ingredient" %> 
    </div> 
<% end %> 

私の問題があります私は今ユーザーがサイトの原料のセクションから新しい原料を作ることができるようにしたいと考えています。モーダルボックスとjQuery機能はサイトのその部分では必要ないので、バニラのHTMLリクエストとして扱いたいと思います。しかし、私は、AJAXの機能をオンデマンドで「切る」方法、あるいはこれが良い方法であるかどうかはわかりません。

リンクのパラメータを新しい成分フォームに渡し、それを使ってフォームの:remote属性を制御することを考えました。ここでベストプラクティスは何ですか?理想的には、リンクからフォームのリモート属性を制御して、AJAXをある場所に保持し、他の場所でHTMLを使用できるようにする方法です。私は簡単に非AJAXバージョンとしてフォームを複製して、それを呼び出して、それは非常に乾燥していないのです...

答えて

4

方法についての簡単なことができます:

<%= form_for @ingredient, :remote => request.xhr? do |f| %> 
ブリリアント
+0

- 、きれいなシンプルな、と(すべての最高) - できます!!!ありがとうございました! – Jim

関連する問題