2016-10-01 1 views
0

//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.

ответ

1

Укажите тип действия, как это:

<%= form_for @user, url: create_user_session_url, method: :post do |f| %> 
+0

Я просто попытался его, он ничего не делает. Сервер по-прежнему отправляет запрос GET – LeongZeno

+0

, вы можете передать символ ': post' в качестве символа. обновил мой ответ – Alfie

+0

Спасибо, пытаясь помочь, но я понял, что случилось. У меня была форма, сделанная во что-то еще, что заставило его отправить запрос на получение. Я попробовал то, что вы сделали, но я не думал об этом, чтобы отладить это. – LeongZeno

Смежные вопросы