VP.*_*VP. 3 rspec ruby-on-rails ruby-on-rails-3
我正面临着rspec和控制器的问题
我正在指定更新操作,所以为此我调用以下代码:
put :update, :id => "1", :ntp => {:name=>'myservah'}
Run Code Online (Sandbox Code Playgroud)
我的控制器有以下代码:
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
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
失败/错误:put:update,:id =>"1",: ntp => {:name =>'myservah'}缺少部分ntps/update with {:handlers => [:erb,:rjs,:builder, :rhtml,:rxml],:formats => [:html],:locale => [:en,:en]}在视图路径"#"中
我的问题是:我应该明确说出我有哪个处理程序?今天我的部分名为'_update.js.erb'.
顺便说一句,我的代码工作,我渲染更新的"js"版本,因为我只是运行一些脚本
Sim*_*tti 13
Rails从某些请求参数中检测响应的格式,包括http接受请求标头(智能猜测),:format
参数或页面扩展.
除非指定,否则Rails会将请求格式默认为:html
.
如您所见,您的请求默认为:html
Rails尝试呈现_update.html.erb
模板的方式.您可以应用一些更改来解决此问题:
如果不同于html,请始终在测试中指定请求格式.
# emulate a js request
put :update, :id => "1", :ntp => {:name=>'myservah'}, :format => :js
Run Code Online (Sandbox Code Playgroud)
如果操作旨在响应AJAX请求,请使用该xhr
方法运行测试
# emulate an XHR request
xhr :put, :update, :id => "1", :ntp => {:name=>'myservah'}, :format => :js
Run Code Online (Sandbox Code Playgroud)使用任何非js响应返回406.更改render :partial => 'update'
到
respond_to do |format|
format.js { render :partial => 'update' }
format.any { head 406 }
end
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
3152 次 |
最近记录: |