【问题标题】:AJAXy action accessible via "normal" request可通过“正常”请求访问的 AJAXy 操作
【发布时间】:2010-07-02 06:31:19
【问题描述】:

您好,

我有一个应用程序,其中包含一个日历作为课程的替代索引视图(项目 has_many 课程)。我有两个箭头用于导航到下/上个月,它通过 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 { ... } 应该做什么呢?

最好的问候

托比亚斯

【问题讨论】:

    标签: javascript ruby-on-rails ajax format


    【解决方案1】:

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

    【讨论】:

    • 啊,我明白了。尽管重定向可能不是一个好主意,因为该页面随后将被插入到日历 div 中。但好事,我可以呈现 404 或其他错误/异常。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    相关资源
    最近更新 更多