У меня проблема с отправкой данных в мои пользовательские методы контроллера через сообщение jquery ajax.
У меня есть следующие рельсы myPlayer.erb.html:
<% form_for @playersonline, :url => game_index_path, :html => { :method => :put, :class => "block", :id => "playersOnline_form" } do |f| %>
<% @playersonline.each do |member| %>
<li>
<div class="playerDetails">
<div class="playerNickname"><%= member.nickname %></div>
<div class="playerPlayLink">
<input type="button" class="submit_button playPlayer" id="<%= member.nickname %>" value="Play" />
</div>
</div>
</li>
<% end %>
<p class="morePlayers">
<a href="">View more players >></a>
</p>
<% end %>
HTML-формы выглядит так:
<form accept-charset="UTF-8" action="/game" class="block" id="playersOnline_form" method="post">
И следующий код jQuery, который прикрепляет обработчики событий к каждой кнопке.
SITE.Game = function() {
$('.playPlayer').live('click',
function() {
SITE.Game.sendGameRequest()
}
);
}
SITE.Game.sendGameRequest = function() {
$.post('/game/test,{"testData": "One", "testDataAgain": "Two"}, function(result) { console.log("data returned = " + result); }, "json")
}
Поэтому, когда я нажимаю кнопку, и событие запускается при выполнении запроса ajax, я получаю следующую ошибку:
Started POST "/game/test" for 127.0.0.1 at 2011-03-13 00:05:59 +0000
ActionController::RoutingError (No route matches "/game/test"):
Мой контроллер выглядит следующим образом, и по выводу сервера я вижу, что он не входит в мой метод тестирования:
class GameController < ApplicationController
def test
puts "---------------------------"
puts "GAME TEST WORKING"
puts "---------------------------"
end
def index
@returnMember = ["Tom","Pete"]
respond_to do |format|
format.json { render :json => @returnMember.to_json }
end
end
end
В моих маршрутах также есть следующее:
resources :game
Есть идеи, где я иду не так?
РЕДАКТИРОВАТЬ
В ответ на nzifnab ответить.Я добавил:
resource :game do
member do
post 'test'
end
end
Но теперь получаю:
ActionController::RoutingError (uninitialized constant GamesController):
РЕДАКТИРОВАТЬ 2
Исправлено выше, если сменить контроллер на GamesControllor из GameController.
Теперь получаю ошибку:
undefined local variable or method `games_index_path'
<% form_for @playersonline, :url => games_index_path, :html => { :method => :put, :class => "block", :id => "playersOnline_form" } do |f| %
>
Смотрите мой контроллер в начале выпуска.
EDIT 3
Исправить для Edit 2 довольно просто!URL изменен на games_path