我遇到了webrat無法看到複選框的問題。我有這樣的(HAML)的一些代碼:Rails rspec/webrat - 看不到複選框
= form_for(@advanced_search, :url => searches_path, :method => 'get', :html => {:class => 'well', :id => 'advanced-search'}) do |f|
Availability
- @advanced_search.availability_types.each do |avail_type|
= check_box_tag "search[availability_types][kind][#{avail_type.id}]", avail_type.id, checked = true, :class => 'checkbox'
= avail_type.kind
將會產生這樣的:
這都是有效的HTML和功能性的作品。但是,當我去測試它時,我沒有看到響應中的任何複選框。
試驗例:
it "should have checkboxes" do
get :index
response.should have_selector("form") do |node|
node.should have_selector('input', :type => 'checkbox')
end
end
輸出:
expected following output to contain a <input type='checkbox'/> tag:
Availability
<br><input class="btn" name="commit" type="submit" value="Search">
的複選框顯示不出來,我不知道爲什麼。我認爲將它們標記爲選中可能是因爲複選框帶有html質樸,但它似乎沒有任何效果。
編輯1 我所知道的,如果我這樣做:
Availability
- @advanced_search.availability_types.each do |avail_type|
= check_box_tag "search[availability_types][kind][#{avail_type.id}]", avail_type.id, checked = true, :class => 'checkbox'
= avail_type.kind
= check_box_tag "search[availability_types][kind][8]", 8, checked = true, :class => 'checkbox'
非動態生成的複選框精細顯示出來:
Availability
<input checked class="checkbox" id="search_availability_types_kind_8" name="search[availability_types][kind][8]" type="checkbox" value="8">
編輯2
我錯過了測試數據庫中的數據...... Doh。我之前添加了這些創建,現在我的複選框出現了。
before(:each) do
AvailabilityType.create!({:kind => 'Full-time'})
AvailabilityType.create!({:kind => 'Part-time'})
AvailabilityType.create!({:kind => 'No Availability'})
end
這就是答案!我之前並沒有添加數據(:each) – ryanjones 2012-03-12 17:19:22