我想弄清楚如何在我的Rails 4應用程序中將布爾屬性從true切換到false。我在早期版本的rails中讀過很多類似的問題,但是路由和其他東西已經改變,使得這些解決方案與我需要的不同。切換布爾在Rails 4
我有一個項目模型,其中包括一個名爲草稿的屬性。如果:draft是錯誤的,我想在我的節目中加入一個鏈接,使草稿更新爲true。
我已經嘗試了其他答案的幾個JS解決方案,但我無法弄清楚我需要這個邏輯。
有沒有人在Rails 4中做過這件事?
我在下面試圖卓然的建議如下:
項目控制器:
def toggle_draft
@project = Project.find(params[:id])
@project.draft = true
@project.save
redirect_to project_path(@project)
end
項目顯示:
<% if @project.scope.finalise.draft %>
<%= link_to toggle_draft_path(id: @scope.id)
<% end %>
路線:
resources :finalise
patch '/toggle-draft', to 'finalises#toggle_draft', as: 'toggle_draft'
我已經更新了我的小號chema創建一個名爲範圍的模型和一個名爲finalize的模型。範圍屬於項目,Finalize屬於範圍。
我已將Scope設置爲接受Finalize和Projects的嵌套屬性,以接受Scope的嵌套屬性。我在項目和範圍上標註了白色的參數,並最終確定。
我現在在Finalize視圖中有兩個部分,一個用於草稿,另一個用於完成。在草案局部我曾嘗試:
<% if @project.scope.draft == true %>
<%= link_to toggle_draft_path(id: @project.scope.id) %>
<% end %>
以我最終化控制器,I具有肘節方法,用於從卓然提示:
def toggle_draft
@finalise = Finalise.find(params[:id])
@finalise.draft = true
@finalise.save
redirect_to project_path(@project)
end
上述和我的航線:
resources :finalises
patch '/toggle-draft', to 'finalises#toggle_draft', as: 'toggle_draft'
我試着啓動服務器來測試這個,但是我得到一個錯誤,說:
rb:4:語法錯誤,u如下所示:期望keyword_do或'{'或'('(SyntaxError) patch'/ toggle-draft',以'finalizes#toggle_draft',如:...
當我評論路線時,並嘗試啓動服務器,我得到一個進一步的錯誤,說:
PG :: UndefinedColumn:錯誤:列finalises.scope_id不存在 行1:SELECT「finalizes」。* FROM「finalizes」WHERE「finalizes 「。」s ...
我的定稿表有一個scopes_id(整數)列。
謝謝
顯示你已經嘗試過的一些代碼,我們將從那裏獲得幫助。 – jvnill
我在上面提出了Zoran的建議 – Mel
要解決'PG:UndefinedColumn'錯誤,您必須在'finalises'表中添加'scope_id'列,並運行必要的遷移。 – Zoran