如何在rails中更新param

时间:2013-07-29 18:50:50

标签: ruby-on-rails ruby ruby-on-rails-3.1 updatemodel

当我收到邀请时,我会尝试将我的日期更改为nil,但它无效。它不会保存在数据库中。

def update
  @solicitacao = Solicitacao.find(params[:id])
  if @solicitacao.respondido == false
    @solicitacao.attributes = {:data_resposta => nil}
  end
  if @solicitacao.update_attributes(params[:solicitacao])
    redirect_to(@solicitacao, :notice => 'Solicitacao atualizada.')
  else
    render :action => "edit" 
  end
end

3 个答案:

答案 0 :(得分:0)

如果更改它,则需要保存!

@solicitacao.save

这将返回一个布尔值,因此如果发生错误,您可以处理错误。

答案 1 :(得分:0)

知道update_attributes如果失败则返回false,我猜你可以尝试这样的事情:

def update
 @solicitacao = Solicitacao.find(params[:id])
 if @solicitacao.respondido == false && @solicitacao.update_attributes( :data_resposta => nil )
  redirect_to(@solicitacao, :notice => 'Solicitacao atualizada.')
 else 
  render :action => "edit" 
 end
end

答案 2 :(得分:0)

您正在做的是在调用if @solicitacao.respondido == false,更新@solicitacao值,然后使用update_attributes保存params[:solicitacao]参数时检查数据库的字段。因此,您更改的内容将不会保存,因为该值不在params[:solicitacao]

您必须在params[:solicitacao]中更改所需内容,将字段data_resposta更改为nil,然后才能生效。

另一方面,您可以使用model.errors查看出错的位置。我不认为你会收到任何错误,因为update_attributes确实有效。这不是你想要保存的东西。