Маршрутная проблема с огурцом - PullRequest
5 голосов
/ 26 августа 2010

Я работаю с рельсами 3 и огурцом, все идет хорошо, за исключением этой маленькой проблемы

Given I am on the "edit automobile" page
  No route matches {:controller=>"automobiles", :action=>"edit"} (ActionController::RoutingError)

Теперь путь задан в paths.rb как edit_automobile_path

, а в route.rb у меня есть автомобили в качестве ресурса, я его замаскировал

поэтому, пожалуйста, скажите мне, что мне не хватает, ясно, что маршрут определен и соответствует, потому что я пробежал грабли и увидел маршрут.

пожалуйста, укажите мне правильное направление

Ответы [ 4 ]

9 голосов
/ 26 августа 2010

В вашем features/support/paths.rb файле для пути, подобного этому, который указывает уникальный ресурс, который вам нужно передать вашему edit_automobile_path идентификатору,

на ваших рейковых маршрутах это будет выглядеть как automobiles/:id/edit

так что вам нужно иметь edit_automobile_path(:id)

Для того, чтобы сделать это в огурце, предположим, что у вас есть что-то вроде

Given I have an automobile
And I am on the 'edit automobile' page

На данном шаге def объявите переменную @automobile = Automobile.create()

А потом в вашем файле paths.rb

when /edit automobile page/
  edit_automobile_path @automobile
...
2 голосов
/ 15 мая 2014

В вашем файле функций вы можете сделать что-то вроде этого:

Given I have an automobile
Then I want to visit edit automobile page for "automobile1"

Тогда в вашем файле определения шага:

Then(/^I want to visit edit automobile page for "(.*?)"$/) do |auto|
 automobile = Automobile.find_by_name(auto)
 visit edit_automobile_path(automobile.id)
end
1 голос
/ 21 августа 2014

Вы можете сделать это, как указано ниже в вашем файле функций:

Given I have an automobile
Then I want to visit edit automobile page for "automob"

Затем в вашем файле определения шага:

Then(/^I want to visit edit automobile page for "(.*?)"$/) do |auto|
 vehicle = Automobile.find_by_name(auto)
 visit edit_automobile_path(vehicle.id)
end
1 голос
/ 22 августа 2012

Если вы хотите отредактировать конкретный автомобиль, я думаю, вы можете использовать следующее в paths.rb:

when /^the edit automobile for "automobile1"$/
  edit_automobile_path(Automobile.find_by_name(page_name.scan(/\"([^"]+)/)))

, поэтому он передает automobile1 в качестве параметра find_by_name().

...