加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用rails 3对rspec更新操作的问题

发布时间:2020-12-17 01:48:40 所属栏目:百科 来源:网络整理
导读:我正面临着rspec和控制器的问题 我正在指定更新操作,所以为此我调用以下代码: put :update,:id = "1",:ntp = {:name='myservah'} 我的控制器有以下代码: def update if @ntp.update_attributes(params[:ntp]) flash.now[:notice] = "Successfully updated
我正面临着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’}
?????缺少部分ntps / update with {:handlers => [:erb,:rjs,:builder,:rhtml,:rxml],:formats => [:html],:locale => [:en,:en在视图路径“#”中

我的问题是:我应该明确说出我有哪个处理程序?今天我的部分名为’_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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读