2014-03-13 8 views
0

어제까지 모든 것이 잘 작동하고 있었지만 오늘은 앱을 열었고 위에서 언급 한 오류로 저를 환영했습니다. application_controller.rb NoMethodError in Home # index

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 
    before_filter :save_controller 
    after_filter :store_location 


    rescue_from CanCan::AccessDenied do |exception| 
    flash[:error] = "Access denied." 
    redirect_to root_path 
    end 

갱신 2 - - 세션 컨트롤러

class Devise::SessionsController < DeviseController 

    # POST /resource/sign_in 
    def create 
    if valid_email?(params[:user][:email] , params[:user][:password]) || params[:user][:password].blank? 
     flash[:error] = "Email or password is incorrect" 
     redirect_to :back 
    else 
     self.resource = warden.authenticate!(auth_options) 
     set_flash_message(:error, :signed_in) if is_flashing_format? 
     sign_in(resource_name, resource) 
     respond_with resource, :location => after_sign_in_path_for(resource) 
    end 
    end 

갱신 3

다음은 오류가

app/views/devise/registrations/_errors.html.slim where line #5 raised: 

undefined method `each' for "Signed in successfully.":String 

Extracted source (around line #5): 

- if flash[:error] 
h4 Error messages 
ul 
- flash[:error].each do |error| 
li= error 
- if flash[:error_validate_card] 
= flash[:error_validate_card] 

업데이트 보여지고있는 부분이다뷰 -> 고안 -> Registerations -> 파일

<%= form_for(CreativeRequestUser.new,:url=>app_creative_requests_path(),:html=>{:method=>:post,:id=>"creative_request_form"}) do|f| %> 

또한 나는 최근에 내 응용 프로그램에서 rails_admin을 제거하지만, 심지어 그 후 잘 작동했다. [오류]

이 문제에 어떤 도움이 많이, 당신은 플래시의 오류를 통해 itterate하려는 사전 :

+0

플래시 [: 오류]가 문자열로 표시됩니다. 성공 메시지는 플래시 [: 오류]로 지정됩니다. 컨트롤러 코드를 보여줄 수 있습니까? – Debadatt

+0

"Signed in successfully.": 문자열은 배열이 아닌 플래시 문자열이며, 문자열에는 각 메서드를 사용할 수 없습니다. –

+0

플래시 확인 [: 오류] –

답변

0

결국 오류가 발생했습니다 번들 업데이트 명령으로 인해 해고했다, 모든 보석의 이전 버전을 다시 설치해야했다.

자아 및 향후 모든 사용자 참고 - 번들 업데이트는 매우 신중하게 사용하십시오.

0

에 감사를 감상 할 수있다, 그러나 당신은 flash[:error]에 문자열을 할당. 당신은 일반적으로 그냥 flash[:error] << "Email or password is incorrect"

+0

오류가 먹이를 먹는 메시지가 될 때 배열을 사용해야하는 이유는 무엇입니까? 뷰 자체에서 코드를 변경해야합니다. –

+0

시도했지만 도움이되지 않습니다 –

+0

@ AlokAnand - 등록보기 부분도 변경 했으므로 게시해야합니까? –

0

같은 세션 컨트롤러를 업데이트하십시오 세션 컨트롤러에 그

rescue_from CanCan::AccessDenied do |exception| 
    flash[:error] << "Access denied." # see I add you message into flash[:error] array 
    redirect_to root_path 
end 

같은 직원처럼 쓸 필요가 코드를 핫픽스하는 메시지의 배열을 얻을 수 flash[:error] = @item.errors.full_messages를 사용하지만 귀하의 경우 오류를 대신에 : : 라인 set_flash_message에서 오류를 발견 할당에

# POST /resource/sign_in 
    def create 
    if valid_email?(params[:user][:email] , params[:user][:password]) || params[:user][:password].blank? 
     flash[:error] = "Email or password is incorrect" 
     redirect_to :back 
    else 
     self.resource = warden.authenticate!(auth_options) 
     set_flash_message(:notice, :signed_in) if is_navigational_format? 
     sign_in(resource_name, resource) 
     respond_with resource, :location => after_sign_in_path_for(resource) 
    end 
    end 

오류 (: 통지 : signed_in) is_flashing_format 경우?

+0

여전히 오류가 지속됩니다 –

+0

이 set_flash_message (: notice, : signed_in) 같이 변경 했나요? if is_navigational_format? – Debadatt

+0

네, 그랬습니다. –