4

是否有必要像在控制器中一样提及控制器中的私有方法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

4

3 回答 3

8

我认为您误解了“helper_method”的概念。

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

因此,在您的控制器内部,您始终可以在没有“ helper_method”部分的情况下访问您的私有方法

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

对于您的第二个问题,是的,可以通过控制器私有方法访问参数哈希

高温高压

于 2012-12-13T07:21:39.573 回答
6

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

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

于 2012-12-13T07:11:53.143 回答
3

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

class ContorllerName < ApplicationController
 def index
  private_method(params)
 end
 private
 def private_method(vals)
   vals
 end 
end
于 2012-12-13T07:16:00.003 回答