项目属性未在更新时保存

时间:2011-04-26 03:00:59

标签: ruby-on-rails ruby-on-rails-3

我正在构建一个简单的任务管理应用程序,并使用一个复选框来指示任务是否已完成。

以下是我提出的代码:

<%= check_box_tag "id", "id", task.done, 
    :onclick => remote_function(
      :update => "task", 
      :url => { :action => :update, :controller => :tasks, :id => task.id }, 
      :with => "'task[done]=true'", 
      :complete => "alert('hi')"  ) %>

它会打印复选框,并根据task.done的状态自动检查它。但是当我触发onclick并观察日志时,会调用update方法,但不会在任务上更新完成的信息。

以下是任务控制器上的更新代码:

  def update
    @task = Task.find(params[:id])
    @stream = Stream.find(@task.stream_id)

    respond_to do |format|
  if @task.update_attributes(params[:task])
    format.html { redirect_to(@stream, :notice => 'Task was successfully updated.') }
    format.json { head :ok }
  else
    format.html { render :action => "edit" }
    format.json  { render :json => @task.errors, :status => :unprocessable_entity }


     end
    end
  end

为什么在任务记录中没有更新done = true?

非常感谢你们

2 个答案:

答案 0 :(得分:1)

我要检查的两件事:

1)您是否在模型上有attr_accessible值?如果是这样,请确保包含您要更改的值。

2)您是否通过了该更新的验证?你可以尝试保存!作为测试,看看你是否得到了显式的rails验证错误。

答案 1 :(得分:1)

使用Rails 4的更新:不是查找attr_accessible,而是查找控制器中的params.require项。抓住了我!