{:name=>'myserva-6ren">
gpt4 book ai didi

ruby-on-rails - 使用 rails 3 进行 rspec 更新操作的问题

转载 作者:行者123 更新时间:2023-12-04 05:55:48 25 4
gpt4 key购买 nike

我正面临 rspec 和 Controller 的问题

我正在指定一个更新操作,因此我调用以下代码:

put :update, :id => "1", :ntp => {:name=>'myservah'}

我的 Controller 有以下代码:
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'}
在 {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} 中缺少部分 ntps/update查看路径“#”

我的问题是:我应该明确说明我有哪个处理程序吗?今天我的部分被命名为'_update.js.erb'。

顺便说一句,我的代码有效,我渲染了“js”版本的更新,因为我只是运行一些脚本

最佳答案

Rails 从某些请求参数中检测响应的格式,包括 http 接受请求头(智能猜测)、:format参数或页面扩展名。

除非指定,Rails 默认请求格式为 :html .

如您所见,您的请求默认为 :html这意味着 Rails 正在尝试渲染 _update.html.erb模板。您可以应用一些更改来解决此问题:

  • 如果与 html 不同,请始终在测试中指定请求格式。
    # 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
  • 使用任何非 js 响应返回 406。更改 render :partial => 'update'
    respond_to do |format|
    format.js { render :partial => 'update' }
    format.any { head 406 }
    end
  • 关于ruby-on-rails - 使用 rails 3 进行 rspec 更新操作的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3857118/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com