NoMethodError:未定义的方法`assert_select_rjs'

时间:2012-02-24 05:37:34

标签: ruby-on-rails ruby

我正在关注“使用Rails进行敏捷Web开发”第四版中的示例。我在第11.5节测试Ajax更改。

开发: Ubuntu 11.10 RVM | ruby​​ 1.9.3 | rails 3.1

这是一个奇怪的错误:     test_should_create_line_item_via_ajax(LineItemsControllerTest):     NoMethodError:未定义的方法`assert_select_rjs'

这是来自line_items_controller_test.rb的代码

test "should create line_item via ajax" do
assert_difference('LineItem.count') do
  xhr :post, :create, :product_id => products(:ruby).id
end

assert_response :success

assert_select_rjs :replace_html, 'cart' do
  assert_select 'tr#current_item td', /Programming Ruby 1.9/
end
end

2 个答案:

答案 0 :(得分:2)

这本书正在使用旧版本的Rails。

请参阅assert_select_rjs的文档。在顶部,它说:

  

弃用或移动方法

     

此方法已弃用或已移至   最新稳定版。显示了最后一个现有版本(v2.3.8)   这里。

RJS一般在Rails 3中的工作方式非常不同。请参见此处:http://weblog.rubyonrails.org/2011/4/21/jquery-new-default

此方法现已在ActionDispatchhttp://apidock.com/rails/v3.0.9/ActionDispatch/Assertions/SelectorAssertions/assert_select_rjs

中提供

答案 1 :(得分:0)

对于ActionController,

assert_select_rjsdeprecated,但仍然是ActionDispatch的一部分。