2012-04-10 55 views
0

將自定義操作批准添加到我們的rails 3.1.3應用程序中,以便更新3個參數。自定義路由被添加到routes.rb中,link_to被調用:method =>:put。但是,「批准」不會重置參數。爲什麼把自定義操作在rails 3.1中不起作用?

這裏是採購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?是在資源控制器中定義的一種方法,用於查看是否需要批准採購。

這裏是輸出耙路線批准:

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

上述哪一部分無法正常工作?你會得到什麼錯誤或不受歡迎的行爲? – Martijn 2012-04-10 15:31:52

+0

您爲我們提供了許多不必要的代碼,但未提供哪些方法'vp_eng?'和'ceo?'是 – MikDiet 2012-04-10 15:32:09

+0

@ sourcing.update_attributes不起作用。它已執行,但:approved_by_vp_eng未重置。 – user938363 2012-04-10 15:35:33

回答

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) 

散列參數需要大括號。

相關問題