Ruby on rails rails状态机按钮转换
新手问题恐怕是关于国家机器宝石的 我已经建立了一个班级如下Ruby on rails rails状态机按钮转换,ruby-on-rails,ruby,Ruby On Rails,Ruby,新手问题恐怕是关于国家机器宝石的 我已经建立了一个班级如下 class Idea < ActiveRecord::Base #state machine state_machine :state, :initial => :voting_underway do event :progress do transition :voting_underway => :accepted, :accepted => :in_development
class Idea < ActiveRecord::Base
#state machine
state_machine :state, :initial => :voting_underway do
event :progress do
transition :voting_underway => :accepted, :accepted => :in_development, :in_development => :done
end
event :reject do
transition all => :rejected
end
def initialize
super() # NOTE: This *must* be called, otherwise states won't get initialized
end
end
end
classidea:投票
事件:进展如何
转换:正在进行投票=>:已接受,:已接受=>:正在开发,:正在开发=>:已完成
结束
事件:拒绝do
全部转换=>:已拒绝
结束
def初始化
super()#注意:必须调用此*函数,否则无法初始化状态
结束
结束
结束
这个愚蠢的问题来了。我如何“推进”一个想法,例如,HAML展示页面上的想法。如何配置按钮?首先是一些常规指针: 在
状态机
块中使用初始化
方法没有多大意义。你根本不需要它,除非你想在它里面做一些定制的事情,而你通常不需要
也就是说,有很多方法可以满足您的需要,但我会选择自定义控制器操作
在管线和IdeasController中创建自定义操作:
# routes.rb
resources :ideas do
put "progress"
end
# ideas_controller.rb
def progress
@idea = Idea.find(params[:id])
@idea.progress!
end
# in a view
= link_to "Transition", idea_progress_path, method: :put
您还可以将请求放入现有的更新
操作,并将state\u event
参数(假设您的状态机属性名为state)设置为要触发的任何事件