Ruby on rails 使用rails 3执行rspec更新操作时出现问题
我面临rspec和控制器的问题 我正在指定一个更新操作,因此为此,我调用以下代码:Ruby on rails 使用rails 3执行rspec更新操作时出现问题,ruby-on-rails,ruby-on-rails-3,rspec,Ruby On Rails,Ruby On 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(
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 => {: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
def更新
如果@ntp.update_属性(参数[:ntp])
flash.now[:notice]=“已成功更新ntp。”
其他的
flash.now[:error]=((errors_to_a(@ntp)*'。
'))+。)
结束
呈现:部分=>“更新”
结束
我得到了以下错误:
失败/错误:put:update,:id=>1,:ntp=>{:name=>'myservah'}
在视图路径“#”中缺少带有{:handlers=>[:erb,:rjs,:builder,:rhtml,:rxml],:formats=>[:html],:locale=>[:en,:en]}的部分NTP/更新
我的问题是:我应该明确说出我有哪个处理器吗?今天我的部分代码名为“_update.js.erb”
顺便说一句,我的代码工作正常,我呈现了“js”版本的更新,因为我只运行了一些脚本,Rails检测来自某些请求参数的响应格式,包括http接受请求头(智能猜测)、
:format
参数或页面扩展
除非指定,否则Rails将请求格式默认为:html
如您所见,您的请求默认为:html
,这意味着Rails正在尝试呈现\u update.html.erb
模板。您可以应用一些更改来解决此问题:
# emulate a js request
put :update, :id => "1", :ntp => {:name=>'myservah'}, :format => :js
如果操作旨在响应AJAX请求,请使用xhr
方法运行测试
# emulate an XHR request
xhr :put, :update, :id => "1", :ntp => {:name=>'myservah'}, :format => :js
respond_to do |format|
format.js { render :partial => 'update' }
format.any { head 406 }
end
我只需更改控制器并添加格式。。谢谢你的“406”提示。。顺便说一句,hxr语法,至少在RSPEC2.0.0中是错误的。很抱歉,它是
xhr
。我修正了答案。