3

我正在与 Rspec book 一起工作,因为它开发了一个“showtime”rails 应用程序,它提供了有关电影的信息。据我所知,我已经准确地复制了代码(这本书在让读者知道要采取的每一步方面并不是那么出色),但我遇到了这个错误。

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文件有这个代码,它为用户提供了一个选择框来选择发布年份,这是Capybara找不到的元素。

#---
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 %>

如果您能提供任何建议,我将不胜感激。

4

1 回答 1

4

试试select "1980", :from => "Release year"吧。如果您希望它显示为“发布年份”,则将标签更改为如下所示:

f.label :release_year, "Release Year"

Rails 使用humanize方法自动为您格式化标签,但您可以将其更改为您喜欢的任何内容。

于 2013-01-23T14:40:30.457 回答