响应格式与 Rails 中的请求不同

发布于 2024-12-29 02:12:09 字数 351 浏览 1 评论 0原文

我有模板: blabla.haml 和 2 个布局:

  1. layouts/application.js.erb
  2. layouts/application.html.haml

在控制器中我有渲染'blabla.haml'在日志中:request.xhr? # true

因此,如果我使用ajax发送请求,我仍然会得到html答案:text/html和layouts/application.html.haml作为布局

我应该怎么做才能获得正确的js答案?

I have template: blabla.haml And 2 layouts:

  1. layouts/application.js.erb
  2. layouts/application.html.haml

In controller i have render 'blabla.haml' In log: request.xhr? # true

So if I send request with ajax I still get html answer: text/html and layouts/application.html.haml as layout

What should I do to get correct js answer?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

江心雾 2025-01-05 02:12:09

在你的控制器中你应该有类似的东西:

class UsersController < ApplicationController::Base
  def index
   respond_to do |format|
    format.js { }
    format.html {}
   end
  end
 end

你也可以用respond_with来实现它,比如:

class UsersController < ApplicationController::Base

  respond_to :html, :xml, :json

  def index
    respond_with(@users = User.all)
  end

  def create
   @user = User.create(params[:user])
   respond_with(@user, :location => users_url)
  end
end

或者甚至在你的ajax查询中,例如,用jquery($.ajax,$.get,$.post,$.getScript等) ) 您可以强制指定内容类型,例如:

$.getScript('ajax/test.js', function(data, textStatus){
  console.log(data); //data returned
  console.log(textStatus); //success
  console.log('Load was performed.');

});

in your controller you should have something like:

class UsersController < ApplicationController::Base
  def index
   respond_to do |format|
    format.js { }
    format.html {}
   end
  end
 end

you could as well implement it with respond_with something like:

class UsersController < ApplicationController::Base

  respond_to :html, :xml, :json

  def index
    respond_with(@users = User.all)
  end

  def create
   @user = User.create(params[:user])
   respond_with(@user, :location => users_url)
  end
end

or even in your ajax query, for example, with jquery ($.ajax, $.get, $.post, $.getScript, etc) you can force the content type, something like:

$.getScript('ajax/test.js', function(data, textStatus){
  console.log(data); //data returned
  console.log(textStatus); //success
  console.log('Load was performed.');

});

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文