我想从另一个控制器更新一个元素。
account_update_params在我的realtor_controller中定义。
我想从另一个控制器更新@realtor,我使用@realtor.update_attributes(account_update_params)
当然,它无法正常工作,因为此控制器中未定义account_update_params。
如何从另一个控制器“调用”account_update_params?
感谢您提前,
F。
答案 0 :(得分:1)
在这种情况下,您应该在应用程序控制器中移动方法account_update_params
。
答案 1 :(得分:1)
你有几种方法可以做到这一点。
说你有
class AccountsContrroller < ApplicationController
def account_update_params; end
end
class DifferentAccountsController < ApplicatonController
end
我从高到低的首选方式:)
1 - 将控制器分组到一个逻辑控制器下,并将所有常用方法移动到该控制器并从中继承(如果有意义),因为这样可以使代码在长期运行时更易于维护。
前:
class AccountsHandlingController < ApplicationController
def account_update_params; end
end
class AccountsContrroller < AccountsHandlingController
end
class DifferentAccountsController < AccountsHandlingController
end
2)如果您的方法需要在多个地方使用且方法1不适用,请考虑创建模块并在需要时包含它
module AccountHandle
def account_update_params; end
end
class AccountsContrroller < AccountsHandlingController
include AccountHandle
end
class DifferentAccountsController < AccountsHandlingController
include AccountHandle
end
3)如果只是几乎所有地方都使用它,请将它添加到您的应用程序控制器中,否则您的应用程序控制器很快就会变得混乱。