2013-01-23 134 views
3

我正在与Rspec书一起工作,因为它开发了一个'showtime'轨道应用程序,它提供了有关电影的信息。据我所知,我已经完全抄袭了这些代码(本书在让读者了解每一步都不太明白的情况下),但是我收到了这个错误。水豚::元素未找到

Unable to find select box "Release Year" (Capybara::ElementNotFound) 
     ./features/step_definitions/movie_steps.rb:6:in `/^I create a movie Caddyshack in the Comedy genre$/' 

我movie_steps.rb文件中有这样的代码,为用户提供一个选择框来选择发行年份,这是水豚无法找到的元素。

#--- 
When /^I create a movie Caddyshack in the Comedy genre$/ do 
    visit movies_path 
    click_link "Add Movie" 
    fill_in "Title", :with => "Caddyshack" 
    select "1980", :from => "Release Year" 
    check "Comedy" 
    click_button "Save" 
end 

Then /^Caddyshack should be in the Comedy genre$/ do 
    visit genres_path 
    click_link "Comedy" 
    response.should contain("1 movie") 
    response.should contain("Caddyshack") 
end 

在电影视图中,我有这个代码,就我所知,所有我需要实现选择框。

<%= form_for @movie do |f| %> 
    <%= f.label :title %> 
    <%= f.text_field :title %> 
    <%= f.label :release_year %> 
    <%= f.select :release_year, (1900..2009).to_a.map(&:to_s) %> 
    <% @genres.each do |genre| %> 
    <label> 
     <%=h genre.name %> 
     <%= check_box_tag "genres[]", genre.id %> 
    </label> 
    <% end %> 
    <%= f.submit "Save" %> 
<% end %> 

我很感激您提供的任何建议。

+0

你可以给页面的实际html吗? –

回答

4

尝试用select "1980", :from => "Release year"代替。如果你想让它显示为“发行年份”,然后更改标签,以显示如下:

f.label :release_year, "Release Year" 

Rails的自动格式化您使用humanize方法的标签,但你可以把它改成你喜欢的任何东西。