0

私はおそらく非常に明白な何かを見逃していますが、私はこれを私たちの人生のために理解することはできません...

Deviseかどうかを確認するために、で簡単なbefore_filterチェックを実行しようとしています。毎回falseを返し、自分で設定したので、にリダイレクトします...Orders_Controllercurrent_user.vendor_id == params[:vendor_id]root_pathorders_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でかなり新しいです。

4

1 に答える 1

1

コントローラへの最初のリクエストでdeparam[:vendor_id]を送信してもよろしいですか?

gem 'debugger'gemfileに追加して実行し、before_filterの比較のすぐ上にbundle install配置します。debugger

次に、パラメータと現在のユーザー値を確認します。

于 2012-08-22T18:50:02.540 に答える