Ошибка маршрутизации (GET вместо POST) с гемом Vote_fu / Thumbs_up - PullRequest
0 голосов
/ 09 декабря 2011

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

Не думаю, что проблема связананепосредственно к драгоценному камню .. но скорее к некоторому неправильному маршруту или отсутствующему параметру ..

У меня есть модель Msg, в которую я включил act_as_voteable.Для пользовательской модели я добавил act_as_voter

В контроллере Msg я добавил

def votefor
    @msg= Msg.find(params[:id])
    current_user.vote_for(@msg)
    redirect_to :back
end

В маршрутах:

 resources :msgs do
        member do
            post :votefor
        end
    end

И к шоу Msg я добавил

<%= link_to "Vote Up", votefor_msg_path(@msg), :method => :post %>

Но когда я нажимаю на созданную ссылку, я получаю

Routing Error

No route matches [GET] "/msgs/1/votefor"

Почему вместо 'POST' отображается 'GET'?Чего мне не хватает?

1 Ответ

1 голос
/ 14 марта 2012

Я думаю, что уже очень поздно, чтобы ответить на этот вопрос, и я в основном думаю, что вы, должно быть, поняли это ... Я столкнулся с той же проблемой, и я понял причину, по которой ..

Это примерный комментарийс routes.rb

  # Sample resource route with options:
  #   resources :products do
  #     member do
  #       get 'short'
  #       post 'toggle'
  #     end

post 'toggle' здесь не постконтроллер, а :method => 'post'

link_to по умолчанию использует :method => 'get', но вы можете переопределить его, используя :method => 'post'

если вы используете link_to .. в примере без :method => 'post'

ваша маршрутизация должна быть

resources :msgs do
   member do
   get :votefor
   end
end

Надеюсь, это поможет!

Обновление:

Если у вас есть сомнения:

link_to с: method =>: post

используйте это

<%= link_to "Vote Up", votefor_msg_path(@msg), :method => :post %>

и в маршрутах это должно быть

resources :msgs do
       member do
       post :votefor
       end
end

post: голосование за .. is: method =>: отправлять не контроллер сообщений.

Проверять ответ brady8

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