我可能错过了一些非常明显的东西,但我无法想象这对我的生活......
我正在尝试在before_filter
中进行简单的Orders_Controller
检查,以查看设计current_user.vendor_id == params[:vendor_id]
。每次都返回false,将我重定向到root_path
,因为我已将其设置在orders_controller
...
before_filter :check_vendor
.
.
.
private
def check_vendor
unless current_user.vendor_id == params[:vendor_id]
redirect_to root_path, :flash => { error: "Sorry, but you don't have sufficient privlidges to view that page" }
end
end
最奇怪的是,当我向用户登录时,导航到
http://localhost:3000/vendors/3/orders/
并在我的索引中使用此代码:
<%= current_user.vendor_id %> <%= params[:vendor_id] %>
它打印在orders#index
视图中:
3 3
这应该意味着当我在控制器中使用相同的逻辑时,它会看到两个值都是'3'(或current_user.vendor_id
和params[:vendor_id]
的任何值)
任何帮助都将不胜感激:)很抱歉,如果这是一个明显的答案,我在Rails还是新手。
答案 0 :(得分:1)
您确定要在第一次向控制器发出请求时发送de param [:vendor_id]吗?
我会将gem 'debugger'
添加到我的gemfile中,运行bundle install
,然后将debugger
放在before_filter中的comparisson上方。
然后检查参数和当前用户值。