Пользовательский запрос ruby ​​on rails Ошибка сериализации JSON: ArgumentError (неверное количество аргументов (0 для 1) - PullRequest
1 голос
/ 12 января 2012

Я делаю пользовательский запрос с настраиваемым полем, установленным в модели, например:

class Book < ActiveRecord::Base
  has_one :warehouseRecord
  def self.customList()
    Book.
        select("books.id, books.name, warehouseRecord.count").limit(10).
        joins(:warehouseRecord)
  end
end

при сериализации результатов в json или при попытке вывести значение счетчика в html-представление

@books = Book.customList()

respond_to do |format|
  format.html 
  format.json { render :json => @books }
end

Iполучить ошибку: (неверное количество аргументов (0 для 1).

Если кто-нибудь знает, как это исправить, помогите.

1 Ответ

0 голосов
/ 12 января 2012

Я должен получить доступ к полям локально и использовать include (), insted of joins () и написать поля произвольного выбора: http://guides.rubyonrails.org/active_record_querying.html

class Book < ActiveRecord::Base
  has_one :warehouseRecord
  def self.customList()
    Book.includes(:warehouseRecord)
  end
end

Для представления в формате json добавьте customList.json.erb, например:

<% @books.each_with_index do |book, index| %>
{
  "id" : "<%= book.id %>",
  "name" : "<%= book.name %>",
  "count" : "<%= book.warehouseRecord.count %>"     
}<% unless index == @books.count - 1%>,<% end %>
<% end %>]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...