【问题标题】:Form of an Ajax request doesn't get submitted未提交 Ajax 请求的表单
【发布时间】:2011-12-02 08:55:55
【问题描述】:

我使用 Ajax 请求加载图片和单选按钮。之后,如果我单击 ,我想提交此单选按钮。提交适用于所有表单,但不适用于 Ajax 表单。怎么了?

信息:Ajax 内容被加载到 div。

查看 - new.html.erb

<%= form_for :site, :html => { :id => "form_all" }  do |sg| %>
  ...
  <%= sg.submit 'Confirm Step 1' %>
  <%= sg.text_field :subject %>
  ...

  <div id="pics_<%= deal.DealID %>">
  </div

  <%= link_to "Get pictures", {:action => "new", :format => :js }, :remote => true %> 
<% end %>

控制器 - site_controller.rb

def new
  respond_to do |format|
    format.html { }
    format.js {}
  end
end

JS - new.js.erb

$("#hidden_div").html('<%= escape_javascript( render :partial => "hidden" ) %>');
var div_name = $("#hidden_field").val();
var substr = div_name.split('"');
$(substr[1]).html('<%= escape_javascript( render :partial => "pic" ) %>');

JS - application.hs

jQuery.ajaxSetup({
  'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
})

jQuery.fn.submitWithAjax = function() {
  this.submit(function() {
    $.post(this.action, $(this).serialize(), null, "script");
    return false;
  })
  return this;
};

$(document).ready(function() {
  $("#form_all").submitWithAjax();
})

部分 - _pic.html.erb

<% @Pics.each do |pic| %>
  <a href="<%= pic.PublicServerURI %>" target="_blank"><%= image_tag(("#{pic.PublicServerURI}"), :size => "100x80") %></a>                                       
  <input value="<%= pic.PublicServerURI %>" id="site_pics" name="pics[DealID[<%= @DealID %>]]" type="radio">Use Deal with that Picture<br> 
<% end %> 

【问题讨论】:

  • 我对ruby一无所知,但是可以发布一些真实的输出吗?而且你还没有发布一行 jquery...
  • 嘿,实际输出是什么意思?我没有发布 jquery,因为它可以加载图片和单选按钮。我会添加更多细节!
  • 真正的输出意味着 html ruby​​ 吐出来
  • 添加表单元素的真实输出
  • 请贴出表格的完整代码——我有预感……。 (这怎么不是一个真正的问题?)

标签: jquery ruby-on-rails ajax forms


【解决方案1】:

据我所知,你不能嵌套form_for,因为你不能嵌套表单标签。您也不应该在每个表单中使用多个提交按钮。

我可能会尝试类似的东西

link_to "Get pictures", new_foo_path, :remote => true

通过响应替换内容。

【讨论】:

  • 它如何与 new_foo_path 一起工作?控制器名为:站点和操作:新
  • 您可以通过:controller =&gt; "site", :action =&gt; "new" 直接分配它们,但是如果您正确定义了您的路线,您应该也可以使用new_site_path。运行 rake routes 以查看哪些助手可用以及定义了哪些路由。
  • 我使用 "site", :action => "new", :remote => true %> 现在是我的第二个 form_for 但它的瞬间dont works for me, he reloads the page and dont 获取 ajax。
  • 你是否包含 rails.js?您是否收到任何 Javascript 错误?
  • 好的谢谢这个。我将 form_for 更改为 link_to 以进行 Ajax 调用,但它不会由 form_for 提交t change the problem that the Ajax Forms cant :site do |sg|
猜你喜欢
  • 2018-03-10
  • 2019-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 2013-07-26
相关资源
最近更新 更多