1

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 %>

選別。

ここで役立つ他のコードがわからない。私にお知らせください。私はとても困惑しています。ありがとう!

4

1 に答える 1

1

使用できるパラメーターを渡す必要があるupdate_attributesか、update_attributes!

@user =  User.find(params[:id])
  if @user.update_attributes!(params[:user])
 ...
于 2013-06-09T04:00:18.363 に答える