0
3つのパラメータを更新するコントローラを調達するレール3.1.3アプリにputカスタムアクションが追加されました。カスタムルートはroutes.rbで追加され、link_toはmethod =>:putで呼び出されました。ただし、パラメータは「承認」によってリセットされません。ここでカスタムアクションを置くのがなぜレール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
は、我々は上記のコードで逃したものですか?本当にありがとう。
上記のどの部分が正しく機能していないのですか。どのようなエラーや予期しない動作が発生しますか? – Martijn
多くの不必要なコードを提供していますが、 'vp_eng?'と 'ceo? 'のどのメソッドが提供されていないのですか? – MikDiet
@ sourcing.update_attributesは機能しません。これは実行されましたが、approved_by_vp_engはリセットされませんでした。 – user938363