2016-10-01 40 views
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請求。

回答

1

指定動作類型是這樣的:

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

我剛剛試了一下,沒有做任何事情。服務器仍然發送GET請求 – LeongZeno

+0

你可以傳遞':post'作爲符號嗎?更新了我的回答 – Alfie

+0

謝謝你想幫忙,但我找出了什麼是錯的。我把這個表單渲染成了一些讓它發送get請求的東西。我嘗試了你所做的,但我沒有想到要這樣做來調試。 – LeongZeno

相關問題