2017-02-07 68 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]有什麼區別或好處?using params [:foo]和@foo有什麼區別?

一個區別是,用戶可以通過PARAMS [:FOO]自己在查詢字符串:

example.com/news?foo=1

+0

的'@ foo'是對象構件。 'params [:foo]'是請求參數。 '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 
相關問題