小编Bud*_*ddy的帖子

Rails 2到Rails 3,控制器中的方法验证消失了吗?

来自rails 2,我的大多数控制器都有这些线:

verify :method => :post, :only => :create, :render => {:text => '405 HTTP POST required', :status => 405}, :add_headers => {'Allow' => 'POST'}
verify :method => :put, :only => :update, :render => {:text => '405 HTTP PUT required', :status => 405}, :add_headers => {'Allow' => 'PUT'}
verify :method => :delete, :only => :destroy, :render => {:text => '405 HTTP DELETE required', :status => 405}, :add_headers => {'Allow' => 'DELETE'}
Run Code Online (Sandbox Code Playgroud)

迁移到Rails 3后,我收到了弃用警告,告诉我这些已被删除.我知道我可以获得一些插件或其他任何仍然使用它们,但我的问题是我真的需要了吗?rails 3默认是否强制执行基本方法?看起来它应该如果它没有,我总是感到恼火,不得不一遍又一遍地写这些线...

controller ruby-on-rails

9
推荐指数
1
解决办法
3237
查看次数

Rails RESTful控制器CREATE和UPDATE方法的最佳实践

好的,我正在尝试理解HTML和XML格式的CREATE和UPDATE方法的最佳实践.rails生成器生成的控制器的默认代码对我来说有点不清楚.

对于CREATE方法,给定一个很好的保存,生成器对HTML 表示" redirect_to(@whatever) ",对XML表示 " render:xml => @whatever,:status =>:created,:location => @whatever ".

给定一个糟糕的保存,生成器对HTML 表示" render:action =>'new' ",对XML表示 " render:xml => @ whatever.errors,:status =>:unprocessable_entity ".

但是,对于UPDATE方法,在给定良好更新的情况下,生成器对HTML 表示" redirect_to(@whatever) ",对XML表示" head:ok ".

并且,如果更新错误,生成器会对HTML 进行" render:action =>'edit' ",对XML进行" render:xml => @ whatever.errors,:status =>:unprocessable_entity ".

我理解这一点,这对我来说很有意义,并且工作得很好 - 但是,我有两个问题:

首先,对于成功的CREATE和UPDATE,HTML格式,为什么" redirect_to(@whatever) "而不是" render:action =>'show' "?我理解重定向和渲染之间的区别,只是更好奇你们往往会采用哪种方式以及为什么这样做.似乎重定向将是浏览器不必要的额外旅行.

第二,为什么" head:ok "在通过XML成功更新后,但是" render:xml => @whatever,:status =>:created,:location => @whatever "成功通过XML创建?这似乎与我不一致.看起来像通过XML成功更新应该与通过XML成功创建CREATE相同.好像你需要返回新的/更新的对象,所以你可以测试它.你们是怎么做到的,为什么?

rest ruby-on-rails

6
推荐指数
1
解决办法
1570
查看次数

标签 统计

ruby-on-rails ×2

controller ×1

rest ×1