2014-02-06 3 views
3

내 레일 앱에는 로그인하기 위해 로그인 할 필요가없는 많은 페이지가 있습니다. 예를 들어 특정 사용자의 프로필 페이지입니다. 해당 페이지에 로그인해야하는 경우 내 현재 세션 논리가 이전 페이지로 리디렉션됩니다. 프로필 페이지처럼 보이지 않지만 로그인을 클릭하고 로그인하면 URL에 지정된 URL로 연결됩니다. 내 SessionsController 액션. 이것은 나에게 교차로를 가져온다. 사용자가 로그인을 클릭 할 수 있도록 세션 양식이있는 모든 페이지 (layouts/application.html.erb)에 모달이 필요하거나 모델이 열리고 로그인 할 때 페이지가 거의 새로 고쳐져 사용자가 현재 상태를 유지할 수 있습니다. 페이지. 그러나, 나는 지금 그것을 시도하고 몇 가지 오류가 발생. 다른 옵션은 개별 로그인 페이지를 가지고 있지만 앱에서 어떤 페이지를 방문했는지에 관계없이 다시 리디렉션됩니다. 불행히도,이 코드를 작성하는 방법을 모르겠습니다.모든 페이지의 로그인 양식 또는 페이지로 리디렉션되는 양식

여기는 현재 모달을 통해 모든 페이지에 세션 양식을 갖기 위해 노력하고있는 코드입니다. 내가 다른 페이지에이 양식을 사용할 때 match '/login', to: "sessions#new", via: "get"

그러나, 나는이 오류를 얻을 :

**SessionsController #create action** 

def create 
    user = User.find_by(email: params[:session][:email].downcase) 
    if user && user.authenticate(params[:session][:password]) 
    sign_in user 
    redirect_back_or request.original_url 
    else 
    flash.now[:error] = "Invalid email/password combination." 
    render 'new' 
    end 
end 

**layouts/application.html.erb** 

<% unless signed_in? %> 
...modal code 
    <%= form_for(:session, url: sessions_path) %> 
     <%= text_field ... %> 
     <%= password_field .... %> 
     <%= submit button %> 
    <% end %> 
... # I've shorted the code here obviously 
<% end %> 

이 양식은 /login 페이지에서 잘 작동

`Missing template public/error with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. ` 

을이 페이지로 이동됩니다 it :

http://localhost:3000/sessions 

이 세션 양식을 모든 p 사이트의 나이 ?? 감사합니다

업데이트

더 함께 연주 후, 나는 내가 대신 현재

redirect_back_or request.original_url 

redirect_back_or profile_path(user) 

에 SessionController의 코드를 변경할 때 양식이 작동 실현

프로필 페이지와 같은 특정 페이지를 지정하는 대신 현재 페이지로 리디렉션 할 수 있습니까?

답변

0

답변을 찾은 것 같습니다. 더 나은 해결책이 있다면 여전히 대답하십시오.

redirect_back_or :back 
+0

redirect_back_or : back or back! – DiegoSalazar

관련 문제