內的routes.rb
resources :sessions, only: [:new, :create]
應用程序/控制器/ session_controller.rb內
class SessionsController < ApplicationController
def new
# just put empty here
# rails will automatically render views/sessions/new.html.erb
# makesure you have this file
end
# I put create and delete session in case you need it later
def create
user = User.find_by_username(params[:session][:username])
if user && user.authenticate(params[:session][:password])
login user
flash[:success] = "Anda berhasil login"
redirect_to yours_path
else
flash.now[:error] = 'sorry cannot login'
render 'new'
end
end
def destroy
session[:user_id] = nil
flash[:success] = "Log out"
redirect_to root_url
end
end
內部的意見/會話/ new.html.erb(我把樣品登錄頁面所以你可以檢查)
<%= form_for(:session, url: sessions_path) do |f| %>
<h2>Please sign in</h2>
<p>
<%= f.label :username, "User name", class: "sr-only" %><br>
<%= f.text_field :username, class: "form-control", placeholder: "User name" %>
</p>
<p>
<%= f.label :password, class: "sr-only" %><br>
<%= f.password_field :password, class: "form-control", placeholder: "Password" %>
</p>
<div class="checkbox">
<label>
<input type="checkbox" value="remember-me"> Remember me
</label>
</div>
<%= f.submit "Log in", class: "btn btn-lg btn-primary btn-block" %>
<h4>
<%= link_to "Reset Password?", new_password_reset_path %>
</h4>
<% end %>
謝謝你的回覆,但我的意思是把表單放在主頁上,而不是創建會話邏輯。 – user8256239
如果你的主頁控制器裏面的方法調用渲染上面用這個命令創建的樣例表格<%= render'sessions/new'%> – widjajayd
工作得很好,奇怪。之前沒有工作過。謝謝你widjajayd。 我錯過了一些東西。 – user8256239