如果被认为无效,你如何编写一个忽略请求的过滤器?
最简单的设计是检查传入请求中是否存在所有字段。如果其中一个不是,我希望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
感谢。
答案 0 :(得分:1)
您可以渲染400状态代码。
def return_invalid
head(400)
end
Rails将立即在过滤器的末尾返回并呈现状态代码。
如果您想要更加用户友好的内容(例如消息),请重定向到某个操作(相同或“新”)并将消息作为flash
消息传递。
def return_invalid
redirect_to { action: "new" }, alert: "Something is wrong"
end