내 사용자 테이블에 AuthLogic을 사용하여 간단한 로그인을 설정하려고합니다. 시도 할 때마다 로그인이 실패하고 이유를 모르겠습니다. 나는 이것이 단순한 오류라고 확신하지만 잠시 동안 벽돌 벽을 치고있다.설정 문제 AuthLogic
#user_sessions_controller
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = "Login successful!"
else
flash[:notice] = "We couldn't log you in. Please try again!"
redirect_to :controller => "index", :action => "index"
end
end
#_user_login.html.erb (this is the partial from my index page where Users log in)
<% form_tag user_session_path do %>
<p><label for="login">Login:</label>
<%= text_field_tag "login", nil, :class => "inputBox", :id => "login",
</p>
<p><label for="password">Password: </label>
<%= password_field_tag "password", nil, :class => "inputBox", :id => "password",
</p>
<p><%= submit_tag "submit", :class => "submit" %></p>
<% end %>
나는 사용자 테이블에 대해 일부 데이터를 생성했지만 로그인 할 수 없습니다. 시도 할 때마다 색인으로 리디렉션됩니다. 내가 어디로 잘못 가고 있니? 감사합니다 여러분.
------ UPDATE ------
지금 막 form_for와 야쿱 Hampl의 제안을 구현 - 나는 새로운 오류를 받고 있어요.ActionView::TemplateError (called id for nil, which would mistakenly be 4 -
1: <% form_for @user_session do |f| %>
2: <% if flash[:notice] -%>
3: <p class="notice"><%= flash[:notice] %></p>
4: <% end -%>
app/views/index/_user_login.html.erb:1
app/views/layouts/index.html.erb:65
app/controllers/index_controller.rb:3:in `index'
Rendered rescues/_trace (86.0ms)
Rendered rescues/_request_and_response (1.0ms)
Rendering rescues/layout (internal_server_error)
나는 컨트롤러를 전혀 변경하지 않았습니다. 이 주제에 대해 답변 해 주신 모든 분들께 감사드립니다. 이 장애물을 극복하기 위해 지금 무엇을 할 수 있습니까?
------
내 응용 프로그램 컨트롤러는 다음과 같습니다.
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.user
end
def require_user
unless current_user
store_location
flash[:notice] = "You must be logged in to access this page"
redirect_to login_path
return false
end
end
def require_no_user
if current_user
store_location
flash[:notice] = "You must be logged out to access this page"
redirect_to root_url
return false
end
end
이 중 어느 것을 @user_session으로 변경해야합니까? 그 외에도 하드에서
<% form_for @user_session do |f| %>
<p>
<%= f.label :username %>
<%= f.text_field :username, :class => :inputBox %>
</p>
<p>
<%= f.label :password %>
<%= f.password_field :password, :class => :inputBox %>
</p>
<p><%= f.submit "submit", :class => :submit %></p>
<% end %>
말 :
@user_session이 인덱스 컨트롤러의'index' 액션에 할당되어 있습니까? – x1a4