我有一个控制器创建操作查找以下规则集中的一个或多个参数。假设我们有两个参数,foo和bar。规则如下:
1)如果参数列表中不存在foo,则必须使用 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
答案 0 :(得分:-1)
您可以使用OR运算符。 例如,如果您将参数作为一个哈希传递。比你可以使用条件
parameters.key?(:foo ) || parameters.key?(:bar)
如果您可以从代码(或描述)中显示更多(如何传递参数),我可以推荐不常用的解决方案。
恕我直言最佳方式将是此代码
if params.key?(:foo) || params.key?(:bar)