0

我的order.rb档案中有六个州。我想访问每个非当前状态以填充下拉菜单,以便可以轻松更改状态。我想出了这个。显然,该功能不起作用,并且状态为written_like_this.

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

任何想法都会很棒。干杯!

4

1 回答 1

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

繁荣。

于 2013-02-27T04:43:02.210 回答