我的参数中的反斜杠

时间:2013-04-22 04:32:19

标签: ruby-on-rails ruby

更新: 我已经将问题缩小到了瓜拉铁杆宝石做一些时髦的事情。它可以达到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;,这是正确的。

2 个答案:

答案 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将被评估为字符串,这看起来像你想要的。