我继承了这段代码,但无法理解这一部分:
我有以下控制器:
class MenuCategoriesController < ApplicationController
load_and_authorize_resource
after_filter lambda { |controller| controller.update_other_locals_for(@menu_category) }, :only => [:create, :update]
# GET /menu_categories
# GET /menu_categories.json
def index
...
在application_controller中是:
def update_other_locals_for(item)
available_locals = item.menu.shop.chosen_locals
...
通常在更新或创建项目时应该更新update_other_locals_for。我设置了一个断点,这似乎永远不会发生。这需要lambda表达式吗?可能是因为它在创建或更新后没有被击中的原因是什么?
答案 0 :(得分:0)
当Rails中的某些内容没有像您认为应该在控制器中那样发生时,请记得检查:
首先,您可以检查是否点击了MenuCategoriesController的创建和更新操作中设置的断点。如果没有调用您的操作,那么您当然不会看到after_filter。
如果您怀疑lambda,请尝试用方法替换它,并验证该方法是否被调用。