我们在源控制器的rails 3.1.3应用程序中添加了put自定义操作批准,用于更新3个参数。在routes.rb中添加了自定义路由,并使用以下方法调用link_to:method => :放。但是,批准'不会重置参数。
以下是采购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 >
need_approve?是一个在sourcings控制器中定义的方法,以查看是否需要批准采购。
以下是批准的佣金路线输出:
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
我们在上面的代码中遗漏了什么?非常感谢。
答案 0 :(得分:0)
问题在于调用update_attributes的方法。使用哈希参数,正确的语法是:
@sourcing.update_attributes({:approved_by_vp_eng => true, :approve_vp_eng_id => session[:user_id],:approve_date_vp_eng => Time.now}, :as => :role_update)
哈希参数需要括号括号。