我有两个用户模型;计划模型 has_many 用户。现在,我想做的是允许用户通过更改 plan_id 来升级/降级他们的计划。我已经设置了一个表单以及适当的操作,但是当我点击提交时,它似乎并没有按照 PUT 操作所说的那样做。它似乎使用了更新操作。
这是我的表格:
<%= form_tag("/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 操作,而不是 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 操作发挥作用的帮助将不胜感激!