1

更新:問題をキュウリレールの宝石がファンキーなことをしているに絞り込みました。バージョン 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"] (ActiveRecord::RecordNotFound) の Pseud が見つかりませんでした

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 > を返します。これは正しいものです。

4

2 に答える 2

1

疑似 ID を括弧で指定しているのはなぜですか? Railsは1文字列の配列形式を維持しようとしているので、それが問題だと思います。

角かっこで囲まれていない疑似 ID を使用して、これを試してください。

<p><%= hidden_field_tag "owner_pseuds[]", current_user.default_pseud.id %></p>

これは、default_pseud.id が配列にならないことを前提としています。これは、コードを見て、正しい前提だと思います。

于 2013-04-22T04:37:31.173 に答える