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したがって、コントローラー内では、' 'セクションなしでいつでもプライベートメソッドにアクセスできます。

すでに行ったように、コントローラーメソッドをヘルパーメソッドとして追加すると、ビューで簡単に呼び出すことができます。

2番目の質問では、はいparamsハッシュはコントローラーのプライベートメソッドを介してアクセスできます

HTH

于 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 に答える