У меня проблема с тем, что вебрат не видит флажки.У меня есть такой код (haml):
= 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