//sessions controller
def welcome
@user = User.new
end
def create
user = User.find_by_username(params[:username])
if user.authenticate(params[:password])
session[:user_id] = user.id
redirect_to root_path
else
redirect_to user_login_path
end
end
//view this one doesn't work it sends a GET request
<%= form_for @user, url: create_user_session_url do |f| %>
<div class="form_group">
<%= f.text_field :username, placeholder: "Username", class: "form-control" %>
</div>
<div class="form_group">
<%= f.password_field :password, placeholder: "Password", class: "form-control" %>
</div>
<div class="form-group">
<%= f.submit "Login", class: "form-control" %>
</div>
<% end %>
//view one works and successfully sends POST request
<%= form_for @user, url: create_user_registration_url do |f| %>
<div class="form_group">
<%= f.text_field :username, placeholder: "Username", class: "form-control" %>
</div>
<div class="form_group">
<%= f.email_field :email, placeholder: "Email", class: "form-control" %>
</div>
<div class="form_group">
<%= f.password_field :password, placeholder: "Password", class: "form-control" %>
</div>
<div class="form_group">
<%= password_field_tag "confirm_password", nil, placeholder: "Confirm Password", class: "form-control" %>
</div>
<div class="form-group">
<%= f.submit "Sign Up", class: "form-control" %>
</div>
<% end %>
这是我的表单,当我在控制台中搜索db:routes时,create_user_session
明确表示其帖子。
Prefix Verb URI Pattern Controller#Action
root GET / application#index
create_user_registration POST /user/login(.:format) user/registrations#create
destroy_user_registration DELETE /user(.:format) user/registrations#destroy
user_registration GET /user(.:format) user/registrations#show
PATCH /user(.:format) user/registrations#update
PUT /user(.:format) user/registrations#update
new_user_session GET /user/welcome(.:format) user/sessions#welcome
create_user_session POST /user/session(.:format) user/sessions#create
destroy_user_session DELETE /user/logout(.:format) user/sessions#destroy
然而,我的愚蠢服务器认为它发送了GET
请求,Started GET "/user/welcome"
我真的很困惑,因为我有另一种形式具有相同的语法并成功发送了POST
请求。我甚至没有收到任何错误,因此很难调试。
只是因为我不清楚,我的服务器甚至都没有尝试发送POST请求。
答案 0 :(得分:1)
指定如下的操作类型:
<%= form_for @user, url: create_user_session_url, method: :post do |f| %>