Rails 3控制器私有方法作为辅助方法

时间:2012-12-13 07:06:05

标签: ruby-on-rails

是否有必要在控制器中将控制器中的私有方法称为helper_methods? 像

class PostsController < ApplicationController
  helper_method :check_something

  def new
    check_something
    @post = Post.new
  end

  def show
    @post = Post.find(params[:id])
  end

private

  def check_something
    redirect_to(root_path) and return if something
  end
end

声明:helper_method :check_something是否必需?如果是这样的话?

当我从控制器操作方法调用私有方法时,私有或params方法可以访问helper哈希吗?

3 个答案:

答案 0 :(得分:8)

我认为你误解了'helper_method'的概念。

helper_method用于使您的控制器方法充当辅助模块中的方法

因此,在您的控制器中,您始终可以在没有“helper_method”部分

的情况下访问您的私有方法

如果您将控制器方法添加为辅助方法,就像您已经完成的那样,在视图中您可以简单地调用它

对于你的第二个问题,是的params hash可以通过控制器私有方法访问

HTH

答案 1 :(得分:6)

不,没有必要。您始终可以在控制器中调用控制器的private方法。

此外,params将自动用于控制器中的private方法。

答案 2 :(得分:3)

无需在控制器中提及私有方法作为辅助方法。您可以通过传递params或任何东西等参数,从同一控制器中的其他方法直接调用它们。

class ContorllerName < ApplicationController
 def index
  private_method(params)
 end
 private
 def private_method(vals)
   vals
 end 
end