ruby - respond_to only format.js 用于所有 mime 类型

标签 ruby ruby-on-rails-3 controller ruby-on-rails-3.1

我有一个响应于 format.js 的 Controller ,但是,大多数请求假设旧的 format.html 仍然存在并抛出 404 异常。如何捕获 Controller 上的所有 MIME 请求并将它们仅重定向到 format.js?

这是当前的 Controller Action

def search
  respond_to do |format|
    unless @search.nil?
      format.js { render :partial => '/search/search_form', :status => 200 }
    else
      format.js { render :partial => '/search/not_exist', :status => 500 }
    end
  end
end

我正在尝试做这样的事情,(我知道这是无效的,只是为了演示)。

def search
  respond_to(:html) do |format|
    unless @search.nil?
      format.js { render :partial => '/search/search_form', :status => 200 }
    else
      format.js { render :partial => '/search/not_exist', :status => 500 }
    end
  end
end

最佳答案

如果所有请求都应该只有js,就把respond_to整个结构拿出来:

def search
  unless @search.nil?
    render :partial => '/search/search_form', :status => 200
  else
    render :partial => '/search/not_exist', :status => 422
  end
end

(注意:更改为 422 不可处理的实体以指示提交存在语义问题。500 通常用于服务器错误,例如崩溃、堆栈转储等)

关于ruby - respond_to only format.js 用于所有 mime 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7056293/

相关文章:

html - 如何在 link_to 中包含 title 和 class 属性?

linux - 如何在Linux上编写PIC Controller 程序?

python - 类定义中未声明的 Python 变量的 Ruby 模拟是什么?

Ruby 模块包含,无法访问包含的方法,只能访问常量

java - flac: "ERROR: input file has an ID3v2 tag"(它没有)

php - Laravel 无法识别 Controller __invoke()

javascript - AngularJS Controller 在注入(inject)工厂时抛出错误

mysql - Rails 将主 ID 更改为 64 位 bigint

ruby-on-rails-3 - 设计 rails 将 user_id 添加到另一个模型

ruby-on-rails - 将外键添加到 Rails 模型