2011-04-26 129 views
1

我正在构建一个简单的任务管理应用程序,并使用复选框指示任务是否完成。未更新项目属性

这里是代码,我想出了:

<%= 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并观看日志时,更新方法被调用,但完成的信息未在任务中更新。

这里是任务控制器上更新代码:

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 

=真没有在任务记录更新为什么呢?

非常感谢球员

+1

你的参数哈希在你的更新方法中看起来像什么?此外,您应该从内嵌JavaScript移开,并使用不显眼的JavaScript代替。 http://www.simonecarletti.com/blog/2010/06/unobtrusive-javascript-in-rails-3/ – mbreining 2011-04-26 03:17:55

回答

1

两件事情我会检查:

1)你对模型attr_accessible值?如果是这样,请确保包含您想要更改的值。

2)您是否通过了该更新的验证?你可以试试保存!作为一个测试,看看你是否得到一个明确的轨道验证错误。

+0

attr_accessible是固定它的人..非常感谢。 – 2011-04-26 17:19:01

1

对于那些使用Rails 4的人的更新:而不是查找attr_accessible,请在控制器中查找params.require项。把我抓出来!

相关问题