在update_attributes失败后,Rails不会持久化数据?

时间:2017-11-15 19:17:07

标签: ruby-on-rails

我有以下

@account = Account.find(4)
respond_to do |format|
 format.html { render :action => "edit" }
end

呈现表单

<%= form_for(@account,:html => {:id => "account" }) do |f| %> 
  <%= f.label :name %>
  <%= f.text_field :name %>
  <%= f.label :amount %>
  <%= f.text_field :amount %>      
<% end %>

将更新发送到

@account = Account.find(params[:id])
@account.update_attributes(Account.params(params))
respond_to do |format|
 format.html { render :action => "edit" }
end

我在帐户模型中有功能

def self.params(params)
    params.require(:account).permit!
end

帐户无法更新时。 我看到错误,但表单不会保留我尝试更新帐户的数据? 我尝试使用

<%= form_for(@account,:html => {:id => "account" }) do |f| %> 
  <%= f.label :name %>
  <%= f.text_field :name, :value => params[:user][:name] %>
  <%= f.label :amount %>
  <%= f.text_field :amount, :value => params[:user][:amount]  %>      
<% end %>

但是当我加载编辑页面时,那些失败。

谢谢

1 个答案:

答案 0 :(得分:0)

正在发生的问题有一个原因。代码继承自具有以下内容的类:

slef.reload 

在验证过程中调用的函数之一。

所以每当我们尝试更新更新失败时,因为一旦验证被点击,它就会从数据库重新加载原始值并忽略新值,如果旧值为空则只是一个令人头疼的问题。 所以到了显示时,旧的价值观已经消失了。 谢谢大家的帮助