2017-02-07 15 views
1
ApplicationController 
before_action :example_filter 

def example_filter 
    params[:foo] = '1' if #somethinghere 
    @foo   = '1' if #somethinghere 
end 

NewsController 

if @foo   == '1' #somethinghere 
if params[:foo] == '1' #somethinghere 

この状況で@fooまたはparams [:foo]を使用する上での相違点やメリットは何ですか?クエリ文字列自体:[FOO]:params [:foo]と@fooの違いは何ですか?

1つの違いは、ユーザーがのparamsを渡すことができることである

example.com/news?foo=1

+0

'@のfoo'がオブジェクトメンバーです。 'params [:foo]'はリクエストparamです。 'params [:foo]'は文字列だけです。 'params [:foo] = 1'は要求パラメータを上書きしています。もし '@foo = params [:foo]'と '@foo = '1'を使うのが良いでしょう。 – oklas

+0

@oklas答えとして提出することを検討してください –

答えて

2

@fooオブジェクト部材です。 params[:foo]はリクエストパラメータです。 params[:foo] - オブジェクトを持たないかもしれません。文字列または文字列の配列(要求からもたらされたもの)のみである可能性があります。

あなたが書き込むコードparams[:foo] = 1は、要求パラメータを上書きしています。

次のようなコードを使用することをお勧めし:

ApplicationController 
before_action :example_filter 

def example_filter 
    @foo = params[:foo] 
    @foo = 'something' if #somethinghere 
end 

# somewhere  
if @foo == '1' #somethinghere 
関連する問題