0
//sessions controller
为什么rails服务器发送GET请求,并且我为form_for放了一个POST请求?
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 %>
这是我的形式,当我做耙分贝:在控制台路线,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请求。
我刚刚试了一下,没有做任何事情。服务器仍然发送GET请求 – LeongZeno
你可以传递':post'作为符号吗?更新了我的回答 – Alfie
谢谢你想帮忙,但我找出了什么是错的。我把这个表单渲染成了一些让它发送get请求的东西。我尝试了你所做的,但我没有想到要这样做来调试。 – LeongZeno