更新另一个控制器中的元素 - 未定义account_update_params

时间:2014-01-16 17:56:07

标签: ruby-on-rails ruby-on-rails-3

我想从另一个控制器更新一个元素。

account_update_params在我的realtor_controller中定义。

我想从另一个控制器更新@realtor,我使用@realtor.update_attributes(account_update_params)

当然,它无法正常工作,因为此控制器中未定义account_update_params。

如何从另一个控制器“调用”account_update_params?

感谢您提前,

F。

2 个答案:

答案 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)如果只是几乎所有地方都使用它,请将它添加到您的应用程序控制器中,否则您的应用程序控制器很快就会变得混乱。