繁体   English   中英

Ajax不能与Rails3.2.1一起使用

[英]Ajax can not work with Rails3.2.1

我的表格

<%= form_tag load_link_path, :remote => true, :html => { :'data-type' => 'html', :id => 'load_link_form' } do %>
<fieldset> 
    <%= url_field_tag(:url) %>
    <div class="validation-error"></div>
    <%= submit_tag %>
</fieldset>
<% end %>

我的行动

def load
  format.js 
end

我的js视图(load.js.erb)

alert(0);

提交表单时,警报不会触发。 控制台输出:

Processing by LinksController#load as JS
  Parameters: {"utf8"=>"✓", "commit"=>"Save changes", "url"=>"http://www.alfajango.com/blog/rails-3-remote-links-and-forms/", "authenticity_token"=>"KWwfZH+sivCrWdlVBUPM0MBRPHzcDhmbB96ckLQ82Dg="}
  Rendered links/load.js.erb (0.4ms)
Completed 200 OK in 2822ms (Views: 9.9ms | ActiveRecord: 0.0ms)

尝试在控制器顶部添加respond_to ,然后将format.js调用包装在respond_with块中

class LinksController < ApplicationController
  respond_to :html, :js

  def load
    respond_with do |format|
      format.js
    end
  end
end

我建议阅读这篇文章 ,这是使用rails3 imo的ajax的最佳指南。

更新:

做了一些小改动之后我才开始工作:

rails中ajax调用的默认方法是“GET”,因此如果要执行“POST”,则需要将其包含在:data-method=>"post" 我还从表单标记中删除了html哈希,并将数据类型设置为脚本 ,如下所示:

<%= form_tag load_link_path, :remote => true, :id => 'create_link_form', :data => {:type=>"script", :"method"=>"post"} do %>

此外,您需要从js.erb文件中取消注释警报,因此请更改:

//alert(0);
$('#message').val('ok');

至:

alert(0);
//$('#message').val('ok');

希望这有帮助,让我知道如果没有,我会把我的代码推到github :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM