2013-02-26 41 views
0

我在我的order.rb文件中有六個狀態。我想訪問每個非當前狀態來填充下拉菜單,以便可以隨時更改狀態。我已經想出了這個。該功能顯然不起作用,並且狀態爲written_like_this訪問非當前state_machine狀態

<% order.state_paths.to_states.each do |state| %> 
    <%= link_to(state.to_s, order.adjust(state)) %> 
<% end %> 

我也想寫一個全方位的方法來解釋上述菜單中的點擊並將記錄轉換到選中狀態。像(僞代碼):

def adjust(state) 
    @order = Order.find(params[:id]) 
    @order.state = state 
end 

任何想法都會很棒。乾杯!

回答

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 %> 

繁榮。