0

link_to_remote を使用するときにフォーム (フィールドと送信ボタンを含む) をレンダリングしたい - フォームは ajax 呼び出しを介して表示されます。

私はそのフォームが他のフォーム (基本的な New Active Record) フォームと同じように動作することを望んでいます。

ただし、送信時に、元の親ページを更新せずに静的なままにし、フォームの代わりに通知 (フォームが正常に送信されました) をその場所に表示したいと思います。

現在の動作では、送信時にページ全体がリダイレクトされます。

リモートをメソッドに入れました:

<%= do_event_remote(contact_event, event) %>

そして、ここにこのヘルパーメソッドがあります:

  def do_event_remote(contact, call_or_email_or_letter) 
    model_name = call_or_email_or_letter.class.name.tableize.singularize 
    link_to_remote "#{model_name.camelize}", 
                   :url => send("new_contact_#{model_name}_path", 
                                            :contact => contact, 
                                            :status => 'done',
                                            :"#{model_name}" => call_or_email_or_letter ),
                   :update => 'remote_event'                                     
  end 

ありがとう...

4

1 に答える 1

0

通常どおりフォームを作成しますが、 の代わりにとの代わりremote_form_forにヘルパーを使用します。これにより、ajax経由でフォームが送信されます。form_forremote_form_tagform_tag

ドキュメント: http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html

更新: 例:

あなたのフォームで(hamlを使用):

= remote_form_for @customer, :url => customer_path(@customer), :complete => "doSomething(request)" do |f|
  %p
    First Name<br>
    = f.text_field :first_name
  %p
    Last Name<br>
    = f.text_field :last_name
  = submit_tag "Update"

フェード機能には、scriptaculous または jquery を使用する必要があります。Scriptaculous は rails に同梱されており、現在はデフォルトです。そのためには、JavaScript は次のようになります。

function doSomething(request){
  Effect.fade('some_div');
}

scriptaculous の詳細: http://wiki.github.com/madrobby/scriptaculous/

于 2010-07-03T00:50:03.917 に答える