我的order.rb
文件中有六个状态。我想访问每个非当前状态以填充下拉菜单,以便可以轻松更改状态。我想出了这个。显然,该功能不起作用,状态为written_like_this
。
<% order.state_paths.to_states.each do |state| %>
<%= link_to(state.to_s, order.adjust(state)) %>
<% end %>
我也想编写一个catch-all方法来解释上面菜单中的点击并将记录转换为选定状态。像(伪代码):
def adjust(state)
@order = Order.find(params[:id])
@order.state = state
end
任何想法都会很棒。干杯!
答案 0 :(得分:0)
我已经明白了。
def adjust
session[:return_to] ||= request.referer
@doc = Doc.find(params[:id])
state = params[:state]
respond_to do |format|
@doc.update_attribute(:state, state)
@doc.create_activity state.to_sym, owner: current_user
format.html { redirect_to root_url, notice: "#{@doc.title} has now been #{state}." }
format.json { render json: @doc }
end
end
我按下这样的按钮:
<% activity.trackable.state_paths.events.each do |s| %>
<%= link_to(s.to_s.titlecase, adjust_path(s, activity.trackable)) %>
<% end %>
动臂。