通过“正常”请求可访问AJAXy操作

时间:2010-07-02 06:31:20

标签: javascript ruby-on-rails ajax format

问候,

我有一个应用程序,其中包含一个日历作为课程的替代索引视图(Project has_many Courses)。我有两个箭头导航到下一个/上个月,它通过AJAX工作。现在,这是我更新日历的行动:

def update_calendar
  @project = Project.find params[:id]
  @date = Date.parse(params[:date]).beginning_of_month
  @courses = @project.courses.all(:conditions => {:date => (@date - 1.month)..(@date + 1.month)})

  respond_to do |format|
    # format.html { redirect_to :action => 'index' }
    format.js { render :partial => 'calendar', :locals => {:calendar_date => @date, :courses => @courses} }
  end
end

重要的部分是format.js { ... }。我认为它应该只回答js / AJAX请求,但事实并非如此。例如,当我点击URL http://localhost:3000/projects/1/update_calendar?date=2010-08-01时,它会呈现部分。我不希望这种行为,我只是希望它在通过AJAX进入时正确回答。我需要使用request.xhr?吗?什么是format.js { ... }应该做的比?

祝你好运

托拜厄斯

1 个答案:

答案 0 :(得分:0)

当有人使用html请求进行该操作时,你需要告诉它你想要发生什么,即你需要重新放入你的format.html块。如果你没有括号,它将执行默认操作显示update_calendar视图的行为。您可能希望重定向到不同的操作。

相关问题