我希望我的index()
方法告诉我何时传入了无效的ID,但我不希望该页面以500为单位进行barf。我想(并已设置)索引方法,以跳过模型ID,它不知道 - 但是,我想以某种方式跟踪那些无效的模型ID。
authorize :read
def index
modelIds = []
validIdList = ""
models = ModelType.get_all_model_names()
models.each do |model|
id = ModelType.get_id(model)
modelIds.push(id)
end
validIdList = modelIds.join(', ')
@filter = "model_type_id IN (#{validIdList})"
end
如何跟踪index()
遇到的无效ID?
答案 0 :(得分:1)
如果您有标准资源resources :something
,那么如果您的意思是无效的路线
/something/#{invalid_id}
然后你不会在索引动作中捕获这些,它们将在show动作中。您可以在before_filter
中完成此操作,以便略微减少show动作中的条件逻辑数量。
在控制器中
before_filter :check_valid_id, only: [:show]
并在控制器的私人部分
def check_valid_id
unless find_something
log(params[:id])
redirect_to :index
end
end
您可能还想在其他成员路线中检查check_valid_id,例如编辑,更新,销毁并提供ID无效的Flash消息