//sessions controller
Почему сервер rails отправляет запрос GET и я вставляю POST-запрос для form_for?
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
Спасибо, пытаясь помочь, но я понял, что случилось. У меня была форма, сделанная во что-то еще, что заставило его отправить запрос на получение. Я попробовал то, что вы сделали, но я не думал об этом, чтобы отладить это. – LeongZeno