如何将link_to_remote与表单一起用作远程URL?

时间:2010-07-02 20:53:17

标签: ruby-on-rails link-to-remote

我想在使用link_to_remote时呈现表单(字段并包含提交按钮) - 表单通过ajax调用显示。

我希望这种形式表现得像任何其他形式(它是一种基本的新活动记录)形式,没什么特别的。

提交后,我希望原始父页面保持静态而不刷新,而不是表单,通知(您的表单已成功提交)。 / p>

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

我将遥控器放入方法中:

<%= 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 

谢谢...

1 个答案:

答案 0 :(得分:0)

您可以正常创建表单,但在remote_form_forform_for的位置使用remote_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/