2013-12-06 2 views
0

Я пытался настроить систему входа в twitter с жемчужиной omuniauth, и вдруг это случилось. Я не могу показать страницу и сообщить об этом ниже. "ArgumentError in MembersController # login неверная последовательность байтов в US-ASCII" Не могли бы вы рассказать мне, как решить эту проблему?ArgumentError в MemberController # login неверная последовательность байтов в US-ASCII

И это журналы в команде терминала.

☆ команды терминала log①

ArgumentError (invalid byte sequence in US-ASCII): 
     better_errors (1.0.1) lib/better_errors/error_page.rb:82:in `exception_message' 
     (erubis:734:in `render' 
     erubis (2.7.0) lib/erubis/evaluator.rb:65:in `eval' 
     erubis (2.7.0) lib/erubis/evaluator.rb:65:in `result' 
     better_errors (1.0.1) lib/better_errors/error_page.rb:25:in `render' 
     better_errors (1.0.1) lib/better_errors/middleware.rb:96:in `show_error_page' 
     better_errors (1.0.1) lib/better_errors/middleware.rb:88:in `rescue in protected_app_call' 
     better_errors (1.0.1) lib/better_errors/middleware.rb:84:in `protected_app_call' 
     better_errors (1.0.1) lib/better_errors/middleware.rb:79:in `better_errors_call' 
     better_errors (1.0.1) lib/better_errors/middleware.rb:56:in `call' 
     actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call' 
     actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' 
     railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app' 
     railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call' 
     activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged' 
     railties (3.2.11) lib/rails/rack/logger.rb:16:in `call' 
     actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call' 
     rack (1.4.5) lib/rack/methodoverride.rb:21:in `call' 
     rack (1.4.5) lib/rack/runtime.rb:17:in `call' 
     activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call' 
     rack (1.4.5) lib/rack/lock.rb:15:in `call' 
     actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call' 
     railties (3.2.11) lib/rails/engine.rb:479:in `call' 
     railties (3.2.11) lib/rails/application.rb:223:in `call' 
     rack (1.4.5) lib/rack/content_length.rb:14:in `call' 
     railties (3.2.11) lib/rails/rack/log_tailer.rb:17:in `call' 
     rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service' 
     /Users/aramakikuniharu/.rvm/rubies/ruby-1.9.3- p448/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service' 
     /Users/aramaki/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' 
     /Users/aramaki/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread' 

☆ логтерминальном команды ②

SyntaxError -  
    /Users/aramaki/railsprojects/miniSNS/app/controllers/application_controller.rb:30: 
    invalid multibyte char (US-ASCII) 
    /Users/aramaki/railsprojects/miniSNS/app/controllers/application_controller.rb:30: syntax error, unexpected $end, expecting keyword_end 
    end      
     ^: 

☆ application_controller.rb

class ApplicationController < ActionController::Base 
    protect_from_forgery 


    def logout 
    session[:user_id] = nil 
    redirect_to "members/login" 
    return 
end 

    def login? 
    if session[:user_id] != nil then 
     return true 
    else 
     return false 
    end 
    end 

    def me? obj = nil 
    id_num = obj !=nil ? obj.member_id : params[:id].to_i 
    if session[:user_id] == id_num then 
     return true 
    else 
     return false 
    end 
    end 

    def admin? 
    Member.find(session[:user_id]).admin 
    end      
      
    def checklogin?   
    if session[:user_id] != nil then 
     return true 
    else      
     redirect_to '/members/login' 
     return false 
    end 
    end 

    def checkme? obj = nil 
    id_num = obj !=nil ? obj.member_id : params[:id].to_i 
    if session[:user_id] == id_num then 
     return true 
    else 
     redirect_to '/members/' + session[:user_id].to_s 
     return false 
    end 
    end 

    def checkadmin? 
    if Member.find(session[:user_id]).admin then 
     return true 
    else 
     redirect_to '/members/' + session[:user_id].to_s 
     return false 
    end 
    end 

    helper_method :current_user 

    private 
    def current_user 
     @current_user ||= Member.find(session[:user_id]) if session[:user_id] 
    end 

end 
+0

попробуйте добавить это в начале контроллера (точно в первую строку файла) '# encoding: utf-8' – gotva

ответ

2

Глядя на код в шестнадцатеричном редакторе показывает, что вы в некоторых точках кода есть куча невидимых символов. Это случается со мной какое-то время, когда ударяя Alt + Space

See image

Если вы не заявили о том, что ваш ruby source file is UTF-8 Рубин 1,9 пытается обработать файл как US-ASCII и не может разобрать те (они изменили это в Ruby 2.0.0 до UTF-8). Вы должны удалить все эти символы (например, есть 5 невидимых символов, которые не являются пробелами после end в строке 30), тогда он должен работать нормально.

+0

Большое спасибо, Mr.klaustopher !! Я решил проблему. –

Смежные вопросы