更新: 我已经将问题缩小到了瓜拉铁杆宝石做一些时髦的事情。它可以达到0.4.1版本,但除此之外我得到了下面提到的错误。仍然不知道为什么。我已经完成了宝石的干净安装,但没有用。
我在使用包含无关内容的参数时遇到了麻烦。
黄瓜测试提交表格,并有一个隐藏的字段
<% 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返回:#&lt; Pseud:0x0000000a224070&gt;,这是正确的。
答案 0 :(得分:1)
为什么要在括号中指定您的伪id?我认为这是问题所在,因为Rails正试图保留一个字符串数组的格式。
尝试使用括号中的伪id 而不是:
<p><%= hidden_field_tag "owner_pseuds[]", current_user.default_pseud.id %></p>
这假设default_pseud.id不是一个数组,从我的代码看,我认为这是一个正确的假设。
答案 1 :(得分:1)
您将[current_user.default_pseud.id]放入数组中。尝试没有括号,如下所示:
<p><%= hidden_field_tag "owner_pseuds[]", current_user.default_pseud.id %></p>
和currrent_user.default_pseud.id将被评估为字符串,这看起来像你想要的。