2010-03-13 135 views
2

[已更新]我有一个任务模型,它具有:完成的布尔属性。如果我点击它,我希望它执行'完成'方法。主要的问题是我在第一个被忽略之后会在列表中显示一系列复选框并在后面显示复选框。该方法从未被调用给定的任务/复选框组合。复选框更新属性

我有这个代码块在我看来:

<% current_user.tasks.each do |t|%> 
     <% if t.completed == false %> 
      <%= check_box_tag :completed, true, checked = false %> 
      <%= observe_field :completed, :url => { :controller => 'tasks', :action => :finish , :id => t.id }, 
       :frequency => 0.25, 
       :update => :completed, 
       :with => true 
      %> 

和我的终点方法是这样的:

def finish 
     @task = Task.find(params[:id]) 
     new = {:completed => true} 
     @task.update_attributes(new) 
     render :update do |page| 
     page.replace_html "taskListing", :partial => 'home/task_listing' 
end 
+0

你在找什么r发布到完成操作的JavaScript还是您有其他问题? – Addy 2010-03-13 16:55:34

+1

我在上面添加了一些信息。基本上,如果我有多个复选框(在do循环中创建)...第一个之后的复选框被忽略。 – Jeff 2010-03-13 21:59:54

回答

4

没关系我想通了:

这就是:

<% current_user.tasks.each do |t|%> 
      <% if t.completed == false %> 
       <%= check_box_tag t.id, true, checked = false %> 
       <%= observe_field t.id, :url => { :controller => 'tasks', :action => :finish , :id => t.id }, 
        :frequency => 0.25, 
        :update => :completed, 
        :with => true 
       %> 
      <%= link_to t.title , t %> - <%= t.due_date.strftime("%B %d, %Y %X %p")%>