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]有什么区别或好处?
一个区别是用户可以在查询字符串中传递params [:foo]:
example.com/news?foo=1
答案 0 :(得分: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