管理者がユーザーのユーザー権限のオンとオフを切り替えてデータベースに保存できるカスタム フォームを作成しようとしています。ページは正常に生成され、送信ボタンはアクションに正常に送信されますが、データベースには何も保存されず、最初のビューが再びレンダリングされるだけなので、私は何か完全に間違っているに違いありません。誰かが私が間違っていることを見ることができますか?
コード
ルート:
resources :users do
member do
get 'assign'
put 'assign_update'
end
end
...
コントローラー (この奇妙な方法は、管理者やその他の属性にアクセスできないという事実を回避しようとする試みです。混乱する可能性があります。):
...
def assign
@user = User.find(params[:id])
end
def assign_update
admin_protected = params[:user].delete(:admin)
@user = User.find(params[:id])
@user.admin = admin_protected
if @user.save
flash[:success] = "User updated"
redirect_to users_path
else
render 'assign'
end
end
意見:
...
<%= form_for(@user, url: { controller: 'users',
action: 'assign_update'}, method: 'put') do |f| %>
<%= f.label :admin, 'Is admin?', class: 'checkbox inline' %>
<%= f.check_box :admin %>
<%= f.submit "Save changes", class: "btn btn-large btn-primary" %>
<% end %>