0

我想在使用 link_to_remote 时呈现一个表单(字段并包括一个提交按钮)——表单通过 ajax 调用出现。

我希望该表单的行为与任何其他表单(它是基本的新活动记录)表单一样,没什么特别的。

但是,在提交时,我希望原始父页面保持静态而不刷新,而不是表单,通知(您的表单已成功提交)代替它。

当前行为,在提交时,它会重定向整个页面。

我将遥控器放入一个方法中:

<%= 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助手代替form_forremote_form_tag代替form_tag。这将通过 ajax 提交表单。

文档位于: 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 回答