更新:我已将问题缩小到 cucumber-rails gem 做一些时髦的事情。它适用于版本 0.4.1,但除此之外,我得到下面提到的错误。仍然不知道为什么。我已经完成了 gem 的全新安装,但无济于事。
我的参数有问题,包括无关内容。
一个黄瓜测试提交表单,有隐藏字段
<% if @collection.new_record? && current_user.pseuds.size > 1 %>
<dt><%= label_tag "owner_pseuds[]", ts("Owner Pseud(s):") %></dt>
<dd><%= select_tag "owner_pseuds[]", options_from_collection_for_select(current_user.pseuds, :id, :name, current_user.default_pseud), :multiple => true %></dd>
<% else %>
<p><%= hidden_field_tag "owner_pseuds[]", [current_user.default_pseud.id] %></p>
<% end %>
当我使用“Rails.logger.debug”时,它显示我的 owner_pseud ID 为 5。但是当表单被 POST 时,它显示如下。
Started POST "/collections" for 127.0.0.1 at 2013-04-22 05:01:57 +0100
Processing by CollectionsController#create as HTML
Parameters: {"utf8"=>"✓", "owner_pseuds"=>["[\"5\"]"], "collection"=>{"name"=>"collection1", ...
我最终得到:找不到 ID=["5"] 的 Pseud (ActiveRecord::RecordNotFound)
我正在使用 cucumber-rails (v. 1.3.1) 和 Capybara (v1.1.4)。
这是我正在处理的分支:https ://github.com/scottsds/otwarchive/compare/upgrade_capybara_1_1_4 。谢谢你提供的所有帮助!
default_pseud 返回:#< Pseud:0x0000000a224070 >,这是正确的。