如果POST请求无效,如何“删除”POST请求

时间:2015-01-19 21:00:37

标签: ruby-on-rails json rspec

如果被认为无效,你如何编写一个忽略请求的过滤器?

最简单的设计是检查传入请求中是否存在所有字段。如果其中一个不是,我希望Rails应用程序返回足够的信息,以便我可以测试验证。

现在,我有一个非常简单的想法:

class ListenerController < ApplicationController
  skip_before_filter :requires_login, :requires_employee
  before_filter :validate
  protect_from_forgery except: :create

  def create
    render nothing: true
    Listener.process(params)
  end

  private

  def validate
    return_invalid unless params[:id].present?
    return_invalid unless params[:content].present?
    return_invalid unless params[:summary].present?
    return_invalid unless params[:displayName].present?
    true
  end

  def return_invalid
    #do something to return simple message
  end
end

感谢。

1 个答案:

答案 0 :(得分:1)

您可以渲染400状态代码。

def return_invalid
  head(400)
end

Rails将立即在过滤器的末尾返回并呈现状态代码。

如果您想要更加用户友好的内容(例如消息),请重定向到某个操作(相同或“新”)并将消息作为flash消息传递。

def return_invalid
  redirect_to { action: "new" }, alert: "Something is wrong"
end