Пожалуйста, помогите мне решить эту ошибку, касающуюся использования HTTPService для подключения Flex4 и Ruby on Rails - PullRequest
0 голосов
/ 30 апреля 2010

У меня есть HTTPService во Flash Builder 4, который определяется следующим образом:

<s:HTTPService id="getUserDetails" url="http://localhost:3000/users/getDetails" method="GET"/>

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

getUserDetails.send({'user[username]': calleeInput.text});

Вот снимок экрана сетевого монитора, показывающий, что параметр отправляется правильно (это 'kirsty'):

альтернативный текст http://img87.imageshack.us/img87/7513/screenshot20100430at548.png

Вот метод Ruby on Rails, с которым он связан:

def getDetails    
    @user = User.find_by_username(:username)
    render :xml => @user
end

Когда я запускаю его, я получаю следующую ошибку в консоли:

Обработка списка UsersController # (для 127.0.0.1 в 2010-04-30 17:48:03) [GET] Пользовательская нагрузка (1,1 мс) SELECT * ОТ "пользователей" Завершено за 30мс (Просмотр: 16, БД: 1) | 200 ОК [http://localhost/users/list]

Обработка UsersController # getDetails (для 127.0.0.1 на 2010-04-30 17:48:13) [GET] Параметры: { "Пользователь" => { "имя пользователя" => "Кирсти"}}
Пользовательская нагрузка (0,3 мс) SELECT * FROM "users" WHERE ("users". "username" = '---: имя пользователя') LIMIT 1

ActionView :: MissingTemplate (Missing шаблон пользователей / getDetails.erb в поле зрения путь к приложению / просмотрам):
приложение / контроллеры / users_controller.rb: 36: в getDetails'<br> /usr/local/lib/ruby/1.8/webrick/httpserver.rb:104:in обслуживание '
/usr/local/lib/ruby/1.8/webrick/httpserver.rb:65:in run'<br> /usr/local/lib/ruby/1.8/webrick/server.rb:173:in start_thread '
/usr/local/lib/ruby/1.8/webrick/server.rb:162:in start'<br> /usr/local/lib/ruby/1.8/webrick/server.rb:162:in start_thread '
/usr/local/lib/ruby/1.8/webrick/server.rb:95:in start'<br> /usr/local/lib/ruby/1.8/webrick/server.rb:92:in каждый '
/usr/local/lib/ruby/1.8/webrick/server.rb:92:in start'<br> /usr/local/lib/ruby/1.8/webrick/server.rb:23:in начало '
/usr/local/lib/ruby/1.8/webrick/server.rb:82:in `Начать '

Рендеринг спасения / макет (ВНУТРЕННЯЯ_ОШИБКА_СЕРВЕР)

Я не уверен, вызвана ли ошибка неправильным кодом в методе getDetails Ruby on Rails? Я новичок в RoR, и мне кажется, что я где-то читал, что каждый метод должен иметь представление. Я просто использую этот метод для получения информации в приложении Flex 4, мне все еще нужно его просмотреть? Это то, что вызывает ошибку? Буду признателен за любую помощь, я застрял на этом в течение нескольких дней! Спасибо.

EDIT:

По предложению Тоби Хеде я изменил HTTPService следующим образом, добавив .xml:

<s:HTTPService id="getUserDetails" url="http://localhost:3000/users/getDetails.xml" method="GET"/>

Теперь я получаю следующую ошибку:

Processing ApplicationController#index (for 127.0.0.1 at 2010-04-30 23:32:29) [GET]
  Parameters: {"user"=>{"username"=>"kirsty"}}

ActionController::RoutingError (No route matches "/users/getDetails.xml" with {:method=>:get}):
  /usr/local/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
  /usr/local/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
  /usr/local/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
  /usr/local/lib/ruby/1.8/webrick/server.rb:162:in `start'
  /usr/local/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
  /usr/local/lib/ruby/1.8/webrick/server.rb:95:in `start'
  /usr/local/lib/ruby/1.8/webrick/server.rb:92:in `each'
  /usr/local/lib/ruby/1.8/webrick/server.rb:92:in `start'
  /usr/local/lib/ruby/1.8/webrick/server.rb:23:in `start'
  /usr/local/lib/ruby/1.8/webrick/server.rb:82:in `start'

Rendering rescues/layout (not_found)

1 Ответ

1 голос
/ 30 апреля 2010

Проблема в том, что Rails ищет файл getDetails.erb.html в соответствующей папке представления. Вам нужно сделать запрос к URL с «.xml» в конце, чтобы сообщить серверу, что вы хотите получить ответ XML. В противном случае по умолчанию используется HTML, что приводит к этой ошибке.

...