Mongoidとdeviseを使ったRailsアプリを作っています。現在、機能はかなり基本的ですが、期待どおりに機能していません。特に、更新はまったく機能していません。
ユーザーを作成できますが、戻って更新すると、エラーは発生しませんが、保存もされません。これは、いくつかのコードでより明確になる場合があります。私はルートでこれを持っています:
devise_for :users
resources :users
そして、これはコントローラーで:
## WORKS PERFECTLY FOR SIGNING USERS UP, AND FLASHES CORRECTLY
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save!
flash[:success] = "Welcome!"
sign_in @user
redirect_to @user
else
render 'new'
end
end
## DOES NOT UPDATE THE USER RECORD, AND DOES NOT FLASH SUCCESS
## IT DOES, HOWEVER, REDIRECT TO SHOW, INSTEAD OF RENDERING EDIT
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.save!
flash[:success] = "Profile edited successfully!"
redirect_to @user
else
render 'edit'
end
end
そうそう。コードが示すように、ビューを介して既存のユーザーを編集しても、そのユーザーは編集されず、ユーザーが編集されたことを示すフラッシュも表示されませんが、正しくリダイレクトされます。現在、ユーザー検証はありません (デバイスにはいくつかあるかもしれませんが) - しかし、すべてのデバイス関連フィールドを変更しても問題は回避されないため、サイレント検証の失敗ではないと思います。
フォームはベーシックなもの
<%= form_for @user do |f| %>
<%= f.label: name %>
<%= f.text_field :name %>
...
<%= f.submit %>
<% end %>
選別。
ここで役立つ他のコードがわからない。私にお知らせください。私はとても困惑しています。ありがとう!