2013-11-04 97 views
0

我有一个表单,用户可以粘贴图像的URL。当用户提交表单时,我想首先创建一个ajax GET请求,下载图像客户端并在出于安全目的进行操作之前对其进行检查。Rails 4:窗体远程自定义ajax请求

我的问题是,远程表单已经做了一个ajax请求,我只能访问它之前和完成绑定。但实际上我需要链接它们。图像检查完成后,从表单开始POST POST ajax请求。

我该怎么做?

(Sry基因,我使用超薄)

= form_for @post, html: { class: "form-horizontal", role: "form" }, remote: true do |f| 
    .form-group 
    = f.label :author, "Name", class: "col-xs-1 control-label" 
    .col-xs-11 
     = f.text_field :author, class: "form-control", placeholder: "Name" 
    .form-group 
    = f.label :title, "Titel", class: "col-xs-1 control-label" 
    .col-xs-11 
     = f.text_field :title, class: "form-control", placeholder: "Titel" 
    .form-group 
    = f.label :text, "URL", class: "col-xs-1 control-label" 
    .col-xs-11 
     = f.url_field :text, class: "form-control", placeholder: "http://" 


    .form-group 
    .col-xs-offset-1.col-xs-11 
     = f.button :submit, class: "btn btn-default" 
+0

只需使用javascript,这很容易。但我不知道你在那里与你有什么关系。你只需预加载图像,检查它的高度/宽度以确保它不是0x0,做任何你想要的额外检查,然后发布你的表单数据。 –

+0

是的,这将是确实......但铁轨有这个自动ajax请求远程窗体和链接。我的问题是我不知道如何用上面解释的自定义ajax请求在rails中构建表单,并将正确的结果发送给我的controlle create操作。 – Mexxer

回答

0

你可以尝试监听的UJS适配器轨提供了ajax:beforeajax:beforeSend事件。

https://github.com/rails/jquery-ujs/wiki/ajax

根据该文件,如果你停止“使用return false这些事件,远程表单请求不应该去。所以你可以通过ajax在表单提交之前下载其中一个事件的图像,并在那里进行检查。

+0

event.stopPropagation()并没有停止请求:($( '#new_post')绑定( 'AJAX:beforeSend',函数(事件){ \t \t event.stopPropagation(); \t}); – Mexxer

+0

如何返回false?似乎工作如下所示:http://stackoverflow.com/questions/4366777/rails-ujs-preventing-the-event-from-propagating-using-ajaxbefore – zungaphobia

+0

'return false'停止请求按照预期在新的Rails 4.0.0应用上进行。 – zungaphobia