2017-01-08 7 views
0

でなければなりません。 。 私がやろうとしているのは、ユーザー情報を生成してデータベースに保存することです。 私はいくつかのjsonまたはシンボルのエラーがあると思いますが、私は解決できません... 助けをいただければ幸いです。Ruby on rails:<トップ(必須)> ':スーパークラスはクラス(シンボル付き)(TypeError)

ここに私のエラーメッセージがあります。

user_controller.rb:17:in `<top (required)>': superclass must be a Class (Symbol given) (TypeError) 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `block in require' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:360:in `require_or_load' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:317:in `depend_on' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:233:in `require_dependency' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/engine.rb:472:in `block (2 levels) in eager_load!' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/engine.rb:471:in `each' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/engine.rb:471:in `block in eager_load!' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/engine.rb:469:in `each' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/engine.rb:469:in `eager_load!' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/engine.rb:346:in `eager_load!' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/application/finisher.rb:56:in `each' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/application/finisher.rb:56:in `block in <module:Finisher>' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/initializable.rb:30:in `instance_exec' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/initializable.rb:30:in `run' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/initializable.rb:55:in `block in run_initializers' 
from /home/ec2-user/.rvm/rubies/ruby-2.2.5/lib/ruby/2.2.0/tsort.rb:226:in `block in tsort_each' 
from /home/ec2-user/.rvm/rubies/ruby-2.2.5/lib/ruby/2.2.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component' 
from /home/ec2-user/.rvm/rubies/ruby-2.2.5/lib/ruby/2.2.0/tsort.rb:429:in `each_strongly_connected_component_from' 
from /home/ec2-user/.rvm/rubies/ruby-2.2.5/lib/ruby/2.2.0/tsort.rb:347:in `block in each_strongly_connected_component' 
from /home/ec2-user/.rvm/rubies/ruby-2.2.5/lib/ruby/2.2.0/tsort.rb:345:in `each' 
from /home/ec2-user/.rvm/rubies/ruby-2.2.5/lib/ruby/2.2.0/tsort.rb:345:in `call' 
from /home/ec2-user/.rvm/rubies/ruby-2.2.5/lib/ruby/2.2.0/tsort.rb:345:in `each_strongly_connected_component' 
from /home/ec2-user/.rvm/rubies/ruby-2.2.5/lib/ruby/2.2.0/tsort.rb:224:in `tsort_each' 
from /home/ec2-user/.rvm/rubies/ruby-2.2.5/lib/ruby/2.2.0/tsort.rb:203:in `tsort_each' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/initializable.rb:54:in `run_initializers' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/application.rb:352:in `initialize!' 
from /home/ec2-user/popcake/config/environment.rb:5:in `<top (required)>' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/application.rb:328:in `require' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/application.rb:328:in `require_environment!' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:142:in `require_application_and_environment!' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:67:in `console' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/app_rails_loader.rb:45:in `require' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/app_rails_loader.rb:45:in `block in exec_app_rails' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/app_rails_loader.rb:34:in `loop' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/app_rails_loader.rb:34:in `exec_app_rails' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/lib/rails/cli.rb:5:in `<top (required)>' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/bin/rails:9:in `require' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/gems/railties-4.2.5/bin/rails:9:in `<top (required)>' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/bin/rails:23:in `load' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/bin/rails:23:in `<main>' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/bin/ruby_executable_hooks:15:in `eval' 
from /home/ec2-user/.rvm/gems/ruby-2.2.5/bin/ruby_executable_hooks:15:in `<main>' 

、これはあなたのuser_controller.rbファイルの変更では、私のuser_controller

require 'openssl' 
require 'jwt' 
require 'json' 

class UserController < 
    def register_native 
     userparams=params.require(:user).permit(:uuid, :username, :email, :encrypted_password) 
     expire = Time.now.to_i + 4 * 3600 
     rsa_private = OpenSSL::PKey::RSA.generate 2048 
     rsa_public = rsa_private.public_key 
     token = JWT.encode userparams, rsa_private, 'RS256' 
     jsonparams ={:uuid => userparams[:uuid],:username => userparams[:username],:email => userparams[:email],:encrypted_password => userparams[:encrypted_password],:private_key =>rsa_private,:token =>token, :exp => expire}.to_json 
     responses={:public_key=>rsa_public, :token=>token}.to_json 
     User.create(jsonparams) 
     render json: responses 
    end 
+1

'class UserController Iceman

+2

なぜオフトピックに投票するのですか?これはstackoverflowのための完全な質問です。 – akuhn

答えて

0

:このエラーはあなたので、発生している

class UserController < 

class UserController < ApplicationController 

へは superclassから継承されていません。あなたのコードが動作しないのはなぜ

5

この

class UserController < ApplicationController 

を試してみてください?クラス名、スーパークラスオブジェクト、および身体

  • def方法を作成して返す文さ:Rubyで

    # bad code 
    class UserController < 
        def register_native 
        end 
    end 
    

    すべては声明で、

    • class

      3つの引数を持つステートメントがありますシンボルとしての名前

    あなたのコードにはスーパークラスの引数がありません。そのため、最初のメソッド定義はexスーパークラスの引数として使用される戻り値。擬似コードで

    これは

    # pseudocode 
    define_class(
        "UserController", 
        define_method("register_native", &empty_block), 
        &empty_block 
    ) 
    

    ように見えるだから何が起こるでしょうか?

    • defこのシンボルは、その後、"superclass must be a Class (Symbol given)"

    楽しい事実を、エラーを発生させ、スーパークラスの引数としてclass声明

  • に渡され、グローバルスコープ内のメソッドを作成し、シンボル:register_native
  • を返します。クラスを返すステートメントは、スーパークラス式に対して有効です。

    # Fun fact, this is valid Ruby 
    class Surprise < [String, Array, Fixnum, Hash].sample 
    end 
    
  • +0

    ありがとうございました...!私は最も基本的なものを逃した! –

    関連する問題