首先,我生成了称为“项目”的脚手架
我想检查项目的哪些字段被修改.我尝试过两次可能的尝试,那些不行.
第一次尝试!
def edit @item = Item.find(params[:id]) @item_before_update = @item.dup end def update @item = Item.find(params[:id]) # compare @item_before_update and @item here,but @item_before_update is NIL !!! end
二次尝试!
我寻找将数据从视图传递到控制器的方式,我不能.
edit.html.erb
<% @item_before_update = @item.dup %> # I thought @item_before_update can be read in update method of item controller. But NO. <% params[:item_before_update] = @item.dup %> # And I also thought params[:item_before_update] can be read in update mothod of item controller. But AGAIN NO <% form_for(@item) do |f| %> # omitted <% end %>
请让我知道如何解决这个问题:(
解决方法
具有尚未持久变化的属性将会更改为真?
@item.title_changed? #=> true
您可以通过使用更改来获取已更改属性的数组
@item.changed #=> ['title']
对于#update操作,您需要使用attributes =来更改对象,那么可以使用更改和更改?之前坚持:
def update @item = Item.find(params[:id]) @item.attributes = params[:item] @item.changed #=> ['title'] ... do stuff @item.save end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。