0

/login私のアプリケーションは正常に動作していますが、/login?user="something" giving 500

私はdevise gemを使用しています

ルート.rb

devise_for :users, :controllers => { :sessions => 'devise/sessions'}, :skip => [:sessions]   do
  get '/login' => "devise/sessions#new", :as => :new_user_session
end

エラー :

Completed 500 Internal Server Error in 263ms

NoMethodError (undefined method `stringify_keys' for "\"something\"":String):


Rendered /usr/local/rvm/gems/ruby-1.9.2-head/gems/actionpack-3.1.0/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.6ms)
Rendered /usr/local/rvm/gems/ruby-1.9.2-head/gems/actionpack-3.1.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.7ms)
Rendered /usr/local/rvm/gems/ruby-1.9.2-head/gems/actionpack-3.1.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (7.9ms)
4

1 に答える 1

1

stringify_keysは、Rails が Ruby Hash クラスに組み込むメソッドであるため、ここでの問題は、devise がプレーンな文字列ではなくユーザー パラメータで属性と値のペアのハッシュを期待していることです。つまり、単なるユーザー名ではなく、ユーザー モデル オブジェクトを想定しています。

ネストされた属性値のペアを URL クエリ文字列または HTML フォーム パラメータにパッキングするために Rails が使用する規則では角括弧が使用されるため、おそらく次のようなものが必要になります。

/login?user[name]=someone&user[password]=secret
于 2012-12-26T14:07:31.133 に答える