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