ユーザー用に 2 つのモデルがあります。Plans モデルには 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_plan アクションではなく update アクションが使用されていると思います。これは、更新アクションの内容にリダイレクトされ、更新アクションと同じものが点滅するためだと思う理由です。
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 アクションを機能させるための助けをいただければ幸いです。