2011-10-30 7 views
5

devise는 devise.en.yml의 플래시 메시지가보기에 표시되지 않는다는 것을 제외하고 내 응용 프로그램에서 완벽하게 작동합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?devise 플래시 메시지가 표시되지 않음

다음은 내 등록 페이지 뷰입니다. :alert:notice을 시도했지만 작동하지 않습니다.

<h2>Sign up</h2> 

<% if flash[:alert] %> 
    <%=flash[:alert]%> 
<%end%> 

<%= form_for(resource,:as=>resource_name,:url => registration_path(resource_name)) do |f| %> 
    <%= devise_error_messages! %> 
    <p><%= f.label :Username %></p> 
    <p><%= f.text_field :username %></p> 

    <p><%= f.label :email %></p> 
    <p><%= f.text_field :email %></p> 

    <p><%= f.label :password %></p> 
    <p><%= f.password_field :password %></p> 

    <p><%= f.label :password_confirmation %></p> 
    <p><%= f.password_field :password_confirmation %></p> 

    <p><%= f.submit "Sign up" %></p> 
<% end %> 

<%= render :partial => "devise/shared/links" %> 

답변

6

플래시가 보이지 않아서 플래시가 보이지 않습니다. 플래시의 목적을 잘못 해석 한 것 같습니다.

플래시의 일반적인 동작은 현재 요청에서 사용자의 현재 세션 값으로 설정 한 다음 후속 요청에서 플래시 메시지가 표시됩니다. 이 패턴을 사용하면 플래시를 설정하고 다른 페이지로 리디렉션 한 다음 리디렉션에서로드하는 해당 페이지에 해당 플래시를 표시 할 수 있습니다. 그런 다음 플래시가 사용되어 세션에서 제거됩니다.

예외적으로 flash.now를 사용하면 이후 작업 대신 현재 작업에서 플래시를 사용할 수 있습니다.

표시 할 플래시가 없기 때문에 플래시가 표시되지 않습니다. 가입 페이지를로드해도 플래시 메시지가 설정되지 않습니다. 플래시가보기에 가치가있는 유일한 방법은 다른 작업이 리디렉션 된 경우 플래시를 설정하기 전에 플래시를 설정하는 것입니다. 이

redirect_to new_user_registrations_path, :notice => "This flash will show up on the sign up page" 

같은 뭔가 일반적으로 특정 뷰 내에서 플래시를 호출하지 않으려는 것이 아니라 응용 프로그램 레이아웃입니다. 이렇게하면 리디렉션을 수행하는 모든 작업에서 플래시를 설정할 수 있으며 후속 페이지가 무엇이든지간에 플래시가 표시됩니다. 특정보기에서 플래시를 설정하려면 특정보기가 리디렉션에 사용 된보기임을 알아야합니다. 항상 그런 것은 아닙니다. flash.now는 리디렉션이 작동하지 않으므로 예외가됩니다. 특정보기에서 플래시를 사용해야하는 경우, 기존의 경고/경고 플래시 바를 사용하지 않습니다. 응용 프로그램 레이아웃에서 찾아 볼 것이고 플래시가 두 번 렌더링되기 때문입니다. [: 사용자 정의 대신 내 사용자/쇼보기 I 플래시를 찾을 것에 그런

class UsersController < ApplicationController 
    def custom_action 
    @user = User.find params[:id] 
    do_something_with @User 
    flash[:user] = "Custom action completed!" 
    redirect_to @user 
    end 
end 

처럼 뭔가 플래시를 설정할 수 있습니다 내 레이아웃 플래시 처리 다르게 처리되는 플래시 뭔가. 나는 실제로 이런 일을해야만하지는 않았지만,해야만한다면, 어떻게 처리 할 수 ​​있느냐는 것이다. 부분 => "공유/flash_messages"%> 또는 = 오류 메시지를 확인하거나 고안보기 파일에 (사람들이 HAML를 사용하는 경우) '공유/flash_messages를'렌더링 : 실패 = 렌더링

0

<% : 메시지

관련 문제