ruby-on-rails – 使用rails 3对rspec更新操作的问题
我正面临着rspec和控制器的问题
我正在指定更新操作,所以为此我调用以下代码: put :update,:id => "1",:ntp => {:name=>'myservah'} 我的控制器有以下代码: def update if @ntp.update_attributes(params[:ntp]) flash.now[:notice] = "Successfully updated ntp." else flash.now[:error] = ((errors_to_a(@ntp)*'.<br />')+'.') end render :partial => 'update' end 我收到以下错误: 失败/错误:put:update,:id => “1”,:ntp => {:名称=> ‘myservah’} 我的问题是:我应该明确说出我有哪个处理程序?今天我的部分名为’_update.js.erb’. 顺便说一句,我的代码工作,我渲染更新的“js”版本,因为我只是运行一些脚本 解决方法
Rails从某些请求参数中检测响应的格式,包括http接受请求标头(智能猜测),:format参数或页面扩展名.
除非指定,否则Rails会将请求格式默认为:html. 如您所见,您的请求默认为:html,这意味着Rails正在尝试呈现_update.html.erb模板.您可以应用一些更改来解决此问题: >如果不同于html,请始终在测试中指定请求格式. # emulate a js request put :update,:ntp => {:name=>'myservah'},:format => :js 如果操作旨在响应AJAX请求,请使用xhr方法运行测试 # emulate an XHR request xhr :put,:update,:format => :js >使用任何非js响应返回406.更改渲染:部分=> ‘更新’到 respond_to do |format| format.js { render :partial => 'update' } format.any { head 406 } end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |