2

今日Rubyを学び始めたばかりなのですが、以下のコードについて質問があります。「:only =>:show」がここのコードにどのように影響するのだろうか。「:only =>:show」がない場合、コードは認証を直接処理すると思います。しかし、":only =>:show" は正確には何をするのでしょうか? ありがとう!

class PeopleController < ApplicationController

  before_filter :authenticate, :only =>:show

  def index
    @people = ["luke-skywalker", "darth-vader"]
  end

  def show
    @person = params[:id]
  end

  private

  def authenticate
    if params[:id] == "darth-vader"
      redirect_to people_url, :notice => "The page is restricted."
      #this is called the flash message
    end
  end
end
4

4 に答える 4

1

これは、フィルター メソッドが「show」メソッドの前にのみ実行されるべきであることを示す、メソッドへのハッシュ引数before_filterです ( filters docsを参照)。

:onlyはハッシュ キー、はコントローラ メソッド:showにマップされるシンボルです。show

于 2012-05-30T23:04:50.363 に答える
1

Before filter は、呼び出した実際のアクションを処理する前にこのメソッドを呼び出すように指示するコールバックです。:only => :show は、コールバックに show アクションに対してのみそれを行うように指示します。取り出すと、すべてのアクションの前にメソッドが呼び出されます

于 2012-05-30T23:05:05.967 に答える
0

ROR では、フィルターはアクションの前に評価される関数またはプロシージャです。特に断りのない限り、フィルターはすべてのアクションの前に評価されます。:only と :except を渡して、どのアクションをフィルタリングするかどうかを指定できます。

于 2012-05-30T23:05:35.760 に答える