Именованные пользовательские маршруты в rspec - PullRequest
1 голос
/ 21 декабря 2011

Я пытаюсь написать спецификацию запроса для настраиваемого действия на одном из моих контроллеров.

Мой route.rb такой:

controller :profile, :path => 'profile' do
  match 'view_friends/:circle_id', :to => :view_friends, :via => [:get], :as => 'view_friends'
end
resources :profile

Я хочу посетить этодействие, и надеялся, что, как я могу использовать

visit profile_path
visit new_profile_path 
etc

Что я мог бы сделать

visit view_friends_profile_path 

Однако это дает мне «ошибка неопределенной локальной переменной или метод»

Я могу получить желаемое поведение, написав

visit profile_path.to_s + '/view_friends/' + circle.id.to_s

Но это ужасно.Чего мне не хватает, чтобы иметь возможность назвать пользовательское действие?

edit:

Соответствующий вывод с рейк-маршрутов

   view_friends GET      (/:locale)/profile/view_friends/:circle_id(.:format)       {:controller=>"profile", :action=>"view_friends"}

1 Ответ

1 голос
/ 21 декабря 2011

Во-первых, я немного запутался. Обычно в рельсах, когда вы делаете контроллер, у контроллера есть имя во множественном числе. Например, если ваша модель называется Profile, то у вас будет ProfilesController. То, как вы пишете свой вопрос, подразумевает, что ваш контроллер называется ProfileController. Кажется, что-то необычное, так что, если бы вы могли уточнить, это было бы полезно. Как говорится, попробуйте это:

# in routes.rb
resources :profile do
  member do
    match 'view_friends/:circle_id' => :view_friends, :via => :get, :as => 'view_friends'
  end
end

Должен производить то, что вы хотите. Вы можете получить к нему доступ, сделав это:

view_friends_profile_path(profile_id, circle_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...