Фильтр Noob: Как мне обратиться к строке, которая передается моему методу Ruby on Rails из Flex как HTTPService? - PullRequest
0 голосов
/ 27 апреля 2010

EDIT:

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

В моем приложении Flex 4 есть HTTPService, определенный следующим образом:

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

Я называю эту службу следующим образом (примечание: я проверил сетевой монитор в Flash Builder 4, и переменная userNameLookup отправлена ​​правильно):

var userNameLookup:String;
userNameLookup = calleeInput.text;
getUserDetails.send(userNameLookup);

И наконец, это метод Ruby on Rails:

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

Это сообщение об ошибке в журнале:

Обработка UsersController # getDetails (для 127.0.0.1 на 2010-04-27 19:24:23) [GET] Пользовательская нагрузка (0,2 мс) SELECT * ОТ "пользователей" ГДЕ ("пользователи". "Имя пользователя" = '---: userNameLookup') LIMIT 1

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

Таким образом, похоже, что на параметр userNameLookup ссылаются неправильно? Просто мысль, но разве имеет значение, что я установил HTTPService на GET, даже если он что-то публикует?

1 Ответ

2 голосов
/ 27 апреля 2010

Методы действия контроллера должны быть реализованы без параметров. Параметры могут быть выведены из параметров запроса.

Попробуйте это:

def getDetails
  @user = User.first(:conditions => {:username => params[:lookupUsername]})
  respond_to do |format|
    format.xml { render :xml => @user }
  end
end

В приведенном выше коде я использовал lookupUsername в качестве параметра запроса. Измените его на фактическое имя, отправленное вашим клиентом Flex.

Редактировать 1

Вам нужен явный обработчик формата xml, чтобы вернуть результат в виде XML. Кроме того, похоже, что параметр lookupUsername пуст в ваших вызовах. Возможно ли, чтобы параметр запроса был назван как-то еще? Вы можете получить имя параметра запроса, посмотрев файл журнала. В вашем лог-файле должна быть следующая запись:

Processing xxxxController#getDetails (for 127.xxx at 2010-04-15 10:27:21) [GET]
  Parameters: {"action"=>"getDetails", "controller"=>"xxxx", 
              "lookupUsername" => "bob"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...