【发布时间】:2012-11-05 00:17:25
【问题描述】:
我正在尝试向控制器添加一个称为回滚的操作。 正如我所见,我唯一应该做的就是编写新动作:
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 为“rollback”的组件,而不是回滚操作。
对我来说似乎很奇怪的是调用“new”操作 rails 使用 new_component_path(不带 s,单数),但如果我写 rollback_component_path 它会抛出一个错误并且我看不到视图。
【问题讨论】:
-
我希望您不希望
rollback操作对数据库执行实际的数据库回滚? (在 Rails 中,事务不会跨越不同的请求——至少默认情况下不会)。
标签: ruby-on-rails controller routes action