【发布时间】:2010-04-18 03:08:27
【问题描述】:
我有一个控制器创建操作在以下规则集中查找一个或多个参数。假设我们有两个参数,foo 和 bar。规则如下:
1) 如果参数列表中不存在 foo,则必须使用 bar。
2) 如果参数列表中不存在 bar ,则 foo 必须。
3)它们可以共存。它们不能都被省略(这与我上面的规则是多余的:))
任何人都可以在 Rails 中展示如何在控制器中处理此问题的示例吗?我应该使用 before_filter 吗?希望得到一些指导,因为这不是 ActiveRecord 验证的东西。所以我需要直接从控制器逻辑而不是模型逻辑向用户构建错误消息。
对于加分,我以 XML 格式输出错误,所以如果您能说明这是如何完成的,那就太好了。假设我们将资源称为“Lorem”,因此它是通过http://foo/lorem.xml 创建的,并且我们有 lorem_controller.rb。
我正在尝试这样的事情,希望有更清洁的方法:
def create
logger.info("request bootstrap: #{params}")
if params[:foo].nil? && params[:bar].nil?
@errors = [] ||= << "Must include foo or bar."
respond_to do |format|
format.xml { render :layout => false,
:xml => @errors.to_xml }
end
end
end
【问题讨论】:
标签: ruby-on-rails