2011-04-26 172 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項。把我抓出來!

相關問題