Проблема маршрутизации с огурцом

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

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

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

а в роутс.рб у меня авто как ресурс, я его подмостил

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

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


person creativeKoder    schedule 26.08.2010    source источник


Ответы (4)


В вашем 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
...
person Jed Schneider    schedule 26.08.2010
comment
Большое вам спасибо за это, я все еще учусь, СПАСИБО, СПАСИБО, СПАСИБО, хорошо, снова за работу - person creativeKoder; 26.08.2010
comment
нет проблем. не забывайте, если эта модель станет вложенным ресурсом, вам нужно будет указать: automobile_id или что-то еще, потому что он не будет знать, какой идентификатор искать, поэтому вам придется изменить вызов в paths.rb, чтобы обработать это. - person Jed Schneider; 26.08.2010

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

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
person Rupali    schedule 15.05.2014

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

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

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

person Ahmad Z. Tibi    schedule 22.08.2012

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

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
person Anuradha    schedule 21.08.2014