コントローラーにロールバックというアクションを追加しようとしています。私が見たように、私がすべきことは新しいアクションを書くことだけです:
def rollback
puts "ROLLBACK!"
respond_to do |format|
format.html # index.html.erb
format.json { render json: @components }
end
routes.rb ファイルを変更します。
resources :components do
collection do
post :rollback, :as => 'rollback'
end
end
そして、いくつかのビューからアクションを呼び出します:
<%= link_to 'Rollback', rollback_components_path %>
しかし、次のエラーが表示されます。
Couldn't find Component with id=rollback
app/controllers/components_controller.rb:18:in `show'
これは、ロールバック アクションに進む代わりに、ID が「ロールバック」のコンポーネントに「表示」しようとしているとコントローラーが判断するためです。
私にとって奇妙に思えるのは、「新しい」アクションレールを呼び出すとnew_component_path(sなし、単数形)が使用されることですが、rollback_component_pathと書くとエラーが発生し、ビューが表示されません。