Похоже, ваш синтаксис маршрута неправильный.
Если вы хотите добавить новые членские маршруты (то есть те, которые применяются к одному экземпляру ресурса), то вы должны сделать:
map.resources :questions,
:member => { :vote_for => :put, :vote_against => :put },
:has_many => :replies, :shallow => true
С другой стороны, если вы хотите переопределить стандартный «новый» сегмент URL, то это будет:
map.resources :questions, :path_names => { :new => 'vote_for' },
:has_many => :replies, :shallow => true
- обратите внимание, что соответствующее действие контроллера все равно будет называться "new". Это позволило бы URL-адреса, такие как:
/ вопросы / vote_for
Однако, глядя на то, что вы пытаетесь сделать, вы можете подумать о создании нового ресурса Vote
. Это будет создано, когда пользователь проголосует за вопрос, и будет соответствовать стандартным соглашениям RESTful-маршрутизации Rails. Голосование по вопросу может иметь URL-адрес, например:
/ вопросы / 22 / голосов / новый