0

我有以下行动appointments_for_week

class StylistsController < ApplicationController

  def appointments_for_week
    stylist = Stylist.find(params[:id])
    date = Time.zone.parse(params[:date])
    appointments = stylist.salon.appointments_flat(stylist.id,
                                                   (date + 1.day).beginning_of_week.advance(:days => -1),
                                                   (date + 1.day).end_of_week.advance(:days => -1) + 1.day)
    respond_to do |format|
      format.json { render :json => @appointments }
    end 
  end 

真正奇怪的事情正在发生。如果我登录然后简单地浏览到此操作的路线,则不会发生任何事情。我得到一个空白页,这是我所期望的。如果我然后转到另一个页面并刷新,我仍然登录,这当然是我所期望的。

但是,如果我通过 ajax 对此操作提出请求,它会将我踢出去。我觉得这非常奇怪。如果我添加一个before_filter跳过身份验证,我不再被踢出,但我当然不想跳过身份验证。我不明白为什么可以通过常规请求而不是 ajax 请求访问此操作。

这里会发生什么?

(我在 Rails 3.2.1 上,以防万一。)

4

1 回答 1

0

好吧,在我花了很长时间整理我的问题两秒钟后,我想通了。

ajax 请求是POST. 切换到GET使其工作。

有趣的是,它是POST以前的,并且完全相同的 JavaScript 工作。我唯一改变的是我更新了我的 jQuery 版本,所以我想它一定与它有关。

于 2012-06-21T17:22:04.530 回答