0
我有一個模型Photo,作爲其業務邏輯的一部分,其中有一個工作流程狀態,用戶可以拒絕或批准其提交。批准或拒絕的行爲最初分爲兩種方法。在Rails中使用控制器內部的模型方法,
例如
def toggle_reject_field
@entry.reject!
respond_to do |format|
format.html { redirect_to request.referer }
format.json { head :no_content }
format.js
end
end
和的link_to路徑
%td= link_to "Reject", (toggle_reject_field_admin_entry_path(photo, params.except(:controller, :action))), :remote => true
我想使這兩種方法中的一種,這樣的link_to就像
%td= link_to "Approve", toggle_field_admin_entry_path(photo, params.except(:controller, :action))
和方法像這樣的東西
def toggle_field
@entry.toggle_state
redirect_to pending_admin_entries_path
end
與方法「toggle_state」居住在我的照片模式(懇求注意到,儘管該模型被稱爲照片,照片的情況下,被稱爲「入口」)
def toggle_state
self.state = (self.state == 'approve') ? 'reject' : 'approve'
end
這裏是我的路線太
namespace :admin do
resources :entries do
get :toggle_field, on: :member
get :pending, on: :collection
get :approved, on: :collection
get :rejected, on: :collection
end
end
但是我得到這個錯誤,我認爲這意味着方法'toggle_state'根據控制器,不存在嗎?
undefined method `toggle_state' for nil:NilClass
def toggle_field
@entry.toggle_state
redirect_to pending_admin_entries_path
end
幫助將大規模讚賞,我覺得好像我一直相處的時間與此一敲我的頭撞在牆上了...
波多黎各
@MarkLipka哦,我的,非常感謝你!,儘管我還是遇到了這個錯誤未定義的方法'狀態'爲#<照片:0x007f992428fd10>。我假設在我的模型方法中,我使用三元運算符來定義狀態? –
@rico_mac是否有狀態字段?你運行過所有的遷移嗎? –
男人,我很抱歉,感謝您的幫助,因爲調用的方法應該是'workflow_state'。你救了我幾個小時,謝謝 –