【发布时间】:2014-07-17 09:23:02
【问题描述】:
我有一个模型 Photo,作为其业务逻辑的一部分,它有一个工作流状态,用户可以在该状态下拒绝或批准其提交。批准或拒绝的行为最初分为两种方法。
例如
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
非常感谢您的帮助,我觉得好像我一直在用这个头撞墙......
里科
【问题讨论】:
标签: ruby-on-rails ruby