Railsを使用してフォームを作成しています。モデルの単一のインスタンスを扱っていないので、form_forを使用できないことはわかっています。したがって、私はform_tagを使用しています。各イテレータ内に(check_box_tagを使用して)いくつかのチェックボックスを作成し、送信ボタンで終了します。したがって、私の見解は次のようになります。
<tbody>
<% form_tag ('/placeBids') do # placeBids controller and route setup correctly%>
<% @auctions.each do |auction| %>
<tr>
<td>....
<td>....
<td><%= check_box_tag auction.product # sets check box id to product name%></td>
</tr>
<% end # end auction.each do%>
</tbody>
</table>
<div style="float: right;">
<%= submit_tag 'Submit' %>
</div>
<% end # end form_for %>
これで、自分のページにアクセスして送信ボタンを押すとコントローラーアクションがトリガーされるという点で機能します。しかし、私がこれをカピバラでテストしようとすると:
let(:bid) {"Submit"}
describe "when bidding on single auction =>" do
@auctions = Auction.all
@auctions.each do |auction|
it "should increase the price of a checked auction '#{auction.product}' by $1." do
check (auction.product)
expect {click_button bid}.to change {auction.price}.by(1)
end
エラーが発生します:
Failure/Error: expect {click_button bid}.to change {auction.price}.by(1)
NoMethodError:
undefined method `node_name' for nil:NilClass
submit_tagが適切な場所にない場合、このエラーが発生するという話を聞いたことがあります。しかし、私は物事をセットアップしたと確信しています。それで、イテレータ内にFormTagHelpersを作成することさえ可能ですか?もしそうなら、私が間違っていることを推測しますか?