我有一个控制器,它对format.js做出响应,但是,大多数请求假设旧的format.html仍然存在,并抛出404异常。如何捕获控制器上的所有mime请求并将它们重定向到format.js?
这是当前的控制器操作

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 structure:

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

(注意:更改为422 unprocessable entity,表示提交时存在语义问题。500通常用于服务器错误,如崩溃、堆栈转储等)

09-27 11:55
查看更多