【问题标题】:Getting rails 3.1 working with ajax and jquery让 rails 3.1 使用 ajax 和 jquery
【发布时间】:2011-12-23 10:30:52
【问题描述】:

我知道这是一个愚蠢的问题,并且有非常相似的问题,但没有一个能真正解决我的问题:

#application.js
//= require jquery
//= require jquery_ujs
//= require_tree .

#form
<%= form_for @comments, :remote => true, do |comment| %>
.....
<% end %>

#controller
def create
  @comments = Comment.new params[:posts]
  if @posts.save
    respond_to do |format| 
      format.html {render 'something'}
      format.js {render :content_type => 'text/javascript', :layout => false}
    end    
  end

#app/view/comment/create.js.erb
alert("hello world, please work!");

有了代码,我只想在不刷新页面的情况下添加cmets,并将帖子附加到页面上。无论如何,每当我提交帖子时,它总是会转到“respond_to”format.html 行,我不知道为什么。当我查看生成的表单时,它可以正确读取数据远程集:

<form accept-charset="UTF-8" action="...." data-remote="true" id="..." method="post"

当我查看 HTTP 接受时,它是

HTTP_ACCEPT: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" even I set the content_type to be text/javascript.  

我发现有人说通过添加 charset :content_type => 'text/javascript;charset=UTF-8' 会有所帮助,但它没有任何魔力。

我也尝试将它添加到 application.js 中,但也没有任何魔法

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

有人可以指导我吗?顺便说一句,我的 Webbrick 服务器中的错误显示“406 不可接受的错误”。我对此感到非常沮丧。我怀疑是我做错了内容类型...

【问题讨论】:

    标签: jquery ruby-on-rails ajax content-type


    【解决方案1】:

    【讨论】:

    • 也可以看看下面页面api.jquery.com/jQuery.ajax的dataType参数。
    • 它不起作用...我只是编辑 {:'data-type' => 'script, :remote => true, do |comment | %> 但它仍然直接进入respond_to html行,我什至尝试删除format.html行,只剩下format.js,但它仍然没有任何好处
    • 错字:'数据类型' => '脚本'
    • 我实际上尝试过这个,但也不起作用..,我做错了什么吗? jQuery.ajax({ url: "/post/create" cache: true, dataType: "script", success: function(data) { alert("hello"); } }
    • 首先,我们在上面的代码中缓存前不需要逗号。查看 Rails 服务器日志并检查您是在 html 还是 js/script 类型中获取请求。
    猜你喜欢
    • 2012-01-30
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    相关资源
    最近更新 更多