XML формат необходим в рельсах 3.0.1 ??? ответ должен быть НЕТ - PullRequest
0 голосов
/ 21 января 2011

какого черта я делаю не так.

Я ничего не изменил, но теперь, когда это 2011, этот вызов не работает, как раньше.

Используя Active Resource, я могу сделать следующий вызов:

>> Member.find(:all, :params => {:code => "1stb48024957856464d436e79ad9d7bc0c2d46d5a02"})
GET http://localhost:3000/members.xml?code=1stb48024957856464d436e79ad9d7bc0c2d46d5a02
--> 500 Internal Server Error  (1601 371ms)
ActiveResource::ServerError: Failed with 500 Internal Server Error

Как видите, я получаю ошибку 500. Так что я иду на свой сервер, где я делаю вызов.

Код здесь в контроллере:

def index
  @store = Store.first
  @members = @store.members.find_by_code(params[:code])

  respond_to do |format|
    format.html # index.html.erb
    format.xml  { render @members.to_xml } # i also tried :xml => @members but that screws up too the same way.
  end
end

Но ниже находится трассировка стека. Это заставляет меня задуматься, почему это просто перестало работать.


Started GET "/members.xml?code=1stb48024957856464d436e79ad9d7bc0c2d46d5a02" for 127.0.0.1 at 2011-01-21 13:58:00 -0500
  Processing by MembersController#index as XML
  Parameters: {"code"=>"1stb48024957856464d436e79ad9d7bc0c2d46d5a02"}
  SQL (0.8ms)  SHOW TABLES
  Store Load (0.4ms)  SELECT `stores`.* FROM `stores` LIMIT 1
  Member Load (0.8ms)  SELECT `members`.* FROM `members` WHERE (`members`.store_id = 1) AND (`members`.`code` = '1stb48024957856464d436e79ad9d7bc0c2d46d5a02') LIMIT 1
Completed   in 268ms

ActionView::MissingTemplate (Missing template 

  4
  <code>1stb48024957856464d436e79ad9d7bc0c2d46d5a02</code>
  2010-12-02T20:14:54Z
  3
  70.2
  10
  http://fnd.nu/7
  1
  2010-12-09T15:37:42Z

 with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:xml], :locale=>[:en, :en]} in view paths "/Users/nerb/current_project/fund/app/views", "/Users/nerb/.rvm/gems/ruby-1.9.2-p0/gems/devise-1.1.3/app/views", "/Users/nerb/current_project/fund", "/"):
  app/controllers/members_controller.rb:16:in `block (2 levels) in index'
  app/controllers/members_controller.rb:14:in `index'

Rendered /Users/nerb/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.1/lib/action_dispatch/middleware/templates/rescues/missing_template.erb within rescues/layout (31.6ms)


Любые мысли приветствуются. Я думал, что форматы XML были освобождены от рендеринга? Хосе так много сказал в этом билете на маяк , но я не могу понять, о чем он говорит.

UPDATE:

Энди, который работал сервером, похоже, отправляет 200, так что спасибо, но теперь я получаю эту ошибку:

Member.find(:all, :params => {:code => "1stb48024957856464d436e79ad9d7bc0c2d46d5a02"})
GET http://localhost:3000/members.xml?code=1stb48024957856464d436e79ad9d7bc0c2d46d5a02
--> 200 OK  (472 399ms)
NoMethodError: undefined method `collect!' for #
    from /Users/nerb/.rvm/gems/ruby-1.8.7-p249/gems/activeresource-2.3.5/lib/active_resource/base.rb:662:in `instantiate_collection'
    from /Users/nerb/.rvm/gems/ruby-1.8.7-p249/gems/activeresource-2.3.5/lib/active_resource/base.rb:639:in `find_every'
    from /Users/nerb/.rvm/gems/ruby-1.8.7-p249/gems/activeresource-2.3.5/lib/active_resource/base.rb:582:in `find'
    from (irb):1

Мысли? Должен ли это быть массив, возвращающийся, даже если это ОДНА запись?

1 Ответ

1 голос
/ 21 января 2011

render :xml => @members - это путь.

Убедитесь, что вы перезагрузите / перезапустите свой сервер после внесения этого изменения, если в работе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...