1

我正在制作一个使用 Mongoid 和设计的 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 回答