Добавление маршрутов для действий, которые работают с одной записью в рельсах - PullRequest
0 голосов
/ 17 февраля 2011

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

Метод в контроллере выглядит следующим образом:

def upvote
  @spot = Spot.find(params[:id])
  @spot.rating += 1

  respond_to do |format|
    format.html # show.html.erb
    format.xml  { render :xml => @spot }
  end
end

Затем при просмотрезапись в "spot / 1" Я включаю этот код:

<%= link_to 'Upvote', @spot, :confirm => 'Are you sure?', :method => :upvote %>

, который при нажатии выдает ошибку:

"No route matches "/spots/1""

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

1 Ответ

0 голосов
/ 17 февраля 2011

Параметр :method определяет HTTP-глагол (GET, POST, UPDATE, ...), а не вызываемый метод.

Чтобы добавить новое действие, отредактируйте файл rout.rb

resources :sposts do
  member do
    put :upvote
  end
end

Тогда используйте именованный маршрут

<%= link_to 'Upvote', upvote_spot_path(@spot), :confirm => 'Are you sure?', :method => :put %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...