Я использую драгоценный камень Thumb_Up для рубина на рельсах.https://github.com/brady8/thumbs_up
Я хочу, чтобы пользователи могли голосовать за сообщения.Однако я не могу понять, как разрешить пользователю нажимать кнопку рядом с каждым сообщением и добавлять голос в базу данных.
Я могу добиться этого в консоли rails, выполнив следующие действия.:
u=User.first
m=Micropost.first
u.vote_for(m)
Тем не менее, как я могу добиться этого при нажатии кнопки в представлении.Я предполагаю, что мне придется использовать ajax, но откуда мне знать URL-адрес, на который я должен публиковать, чтобы это действие произошло?
Любая помощь будет принята с благодарностью.
Обновление:
Большое спасибо за помощь!У меня все еще есть проблема с кодом ниже.
Вот мой route.rb
resources :microposts do
post :vote, :on => :member
end
Просмотр:
<%= link_to('vote for this post!', vote_micropost_path(@micropost), :method => :post) %>
Контроллер:
def vote
@micropost = Micropost.find(params[:id])
current_user.vote_for @micropost
# This assumes you'll only call it via AJAX.
# If your ajax call doesn't return "ok", then you know something went wrong
render :text => 'ok', :layout => false
end
Тем не менее, я все еще получаю эту ошибку: ни один маршрут не соответствует {: controller => "microposts",: id => #,: action => "voice"}
Кто-нибудь знает почемумаршруты не совпадают правильно?