【发布时间】:2012-04-10 15:09:17
【问题描述】:
在采购控制器中的 rails 3.1.3 应用中添加了一个 put 自定义操作批准,用于更新 3 个参数。在 routes.rb 中添加了自定义路由,并使用 :method => :put 调用了 link_to。但是,“批准”不会重置参数。
这是采购 index.html.erb 中的 link_to:
<% @sourcings.each do |src| %>
...
<%= link_to 'Approve', approve_project_sourcing_path(@project, src), :method => :put if need_approve?(src) %>
<% end >
需要批准吗?是 sourcing 控制器中定义的一种方法,用于查看是否需要批准采购。
这是批准的 rake 路由输出:
approve_project_sourcing PUT /projects/:project_id/sourcings/:id/approve(.:format) {:action=>"approve", :controller=>"sourcings"}
这是采购控制器的批准:
def approve
@project = Project.find(params[:project_id])
@sourcing = @project.sourcings.find(params[:id])
if vp_eng?
@sourcing.update_attributes!(:approved_by_vp_eng => true, :approve_vp_eng_id => session[:user_id],
:approve_date_vp_eng => Time.now, :as => :role_update)
elsif ceo?
@sourcing.update_attributes(:approved_by_ceo => true, :approve_ceo_id => session[:user_id],
:approve_date_ceo => Time.now, :as => :role_update)
end
redirect_to project_sourcing_path(@project, @sourcing)
end
我们在上面的代码中遗漏了什么吗?非常感谢。
【问题讨论】:
-
以上哪一部分不起作用,究竟是什么?您会遇到什么错误或意外行为?
-
你给我们提供了很多不必要的代码,却没有提供
vp_eng?和ceo?是什么方法 -
@sourcing.update_attributes 不起作用。它已执行,但 :approved_by_vp_eng 未重置。
-
vp_eng?和首席执行官?就像它说的那样。这意味着如果你是工程副总裁和首席执行官,那么你可以在其中执行代码。
-
如果它被执行了,你为什么要问 put 动作?如果它被执行了,那么 put 动作就起作用了
标签: ruby-on-rails ruby-on-rails-3.1