0

我可能遗漏了一些非常明显的东西,但我无法为我的一生弄清楚这...

我正在尝试对before_filterOrders_Controllercurrent_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_idand params[:vendor_id]

任何帮助将不胜感激:) 对不起,如果这是一个明显的答案,我在 Rails 还是很新。

4

1 回答 1

1

您确定要在第一个请求中向控制器发送 de param[:vendor_id] 吗?

我会添加gem 'debugger'到我的 gemfile 中,运行bundle install,然后放在debuggerbefore_filter 中的比较之上。

然后检查参数和当前用户值。

于 2012-08-22T18:50:02.540 回答