Ошибка маршрутизации Rails с вложенными ресурсами - PullRequest
3 голосов
/ 02 ноября 2010

В моем приложении у меня есть RecipesController и CommentsController. Все комментарии относятся к рецепту и могут быть поставлены на голосование. Вот фрагмент из моих маршрутов.

  resources :recipes do
    member do
      put 'vote_up'
      post 'comment'
    end

    resources :comments do
      member do
        put 'vote_up'
      end
    end
  end

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

vote_up_recipe_comment PUT    /recipes/:recipe_id/comments/:id/vote_up(.:format) {:action=>"vote_up", :controller=>"comments"}

В CommentsController есть метод под названием voice_up.

Также ссылка на маршрут работает (на мой взгляд)

    <%= link_to 'Vote up', vote_up_recipe_comment_path(@recipe, comment), :method => 'put' %> <br />

Однако, нажав на эту ссылку, я получаю следующую ошибку:

Routing Error

No route matches "/recipes/7/comments/4/vote_up"

Что мне не хватает? Я не уверен, как отладить это, потому что, насколько я вижу, маршрут должен совпадать.

Ответы [ 2 ]

5 голосов
/ 02 ноября 2010

Я думаю, что вы получаете это сообщение об ошибке, потому что запрос сделан с помощью метода HTTP GET, а не PUT.

Чтобы создать ссылки, использующие метод POST / PUT / DELETE, ваше приложение должно правильно загрузитьАдаптер Javascript Rails.

Убедитесь, что в вашем приложении есть адаптер JQuery (http://github.com/rails/jquery-ujs) или Prototype JS) и что ваш макет правильно загружает его.

3 голосов
/ 02 ноября 2010

попробуйте следующий твик: отправьте метод put в виде символа

<%= link_to 'Vote up', vote_up_recipe_comment_path(@recipe, comment), :method => :put %>

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