我有兩種模式供用戶使用;計劃模型has_many用戶。現在,我想要做的是允許用戶通過更改plan_id來升級/降級他們的計劃。我已經設置了一個表單以及適當的操作,但是當我點擊提交時,它似乎沒有執行PUT操作所說的內容。它似乎使用更新操作。表格發送到錯誤的PUT請求
這裏是我的形式:
<%= form_tag("https://stackoverflow.com/users/update_plan", :method => "put") do %>
<%= hidden_field_tag :plan_id, plan.id %>
<%= submit_tag("Change To Plan", :class => "signup") %>
<% end %>
這裏是我的更新動作
def update_plan
@user = current_user
@user.plan_id = params[:plan_id]
@user.save
sign_in @user
redirect_to change_plan
end
當我提交以上,雖然,它不僅不辦理變更登記的形式,但我認爲它使用更新操作,而不是update_plan操作。我認爲這是因爲它重定向到更新操作中的內容,並且它與更新操作一樣閃爍。
def update
@user = current_user
if @user.update_attributes(params[:user])
flash[:success] = "Profile updated"
sign_in @user
redirect_to edit_user_path(@user)
else
render 'edit'
end
end
這是我的routes.rb文件
Dentist::Application.routes.draw do
resources :users
resources :sessions, only: [:new, :create, :destroy]
resources :phones, only: [:new, :create, :destroy]
resources :find_numbers, only: [:new, :create, :destroy]
put 'users/update_plan'
match '/signup', to: 'users#new'
match '/login', to: 'sessions#new'
match '/signout', to: 'sessions#destroy', via: :delete
match '/change_plan', to: 'users#change_plan'
root to: 'static_pages#home'
match '/product_demo', to: 'static_pages#product_demo'
match '/pricing', to: 'plans#index'
match '/contact', to: 'static_pages#contact'
而這裏所發生的事情的控制檯截圖:
這似乎說這是用UPDATE_PLAN行動,但。 ..:S
在試圖讓UPDATE_PLAN訴權任何幫助ñ功能將不勝感激!
A-和你是驚人的先生!謝謝你的解釋,它工作:)。 –