Rails InheritedResources - response_with JSON, использующий `find_and_return_for_some_grid` вместо` find (: all) `? - PullRequest
0 голосов
/ 07 октября 2010

У меня есть модель, скажем User.Я хочу позвонить /users (users_controller#index) и передать ему в основном область видимости, чтобы он возвращал данные на основе:

  1. Формат (js, json, html)
  2. диаграмма / сетка / макет, в котором он будет отображаться (старшие диаграммы, базовая таблица html, гибкая сетка jquery и т. д.)

с inherited_resources и has_scope, вы можете сделать что-то подобное, но это не совсем так.

Я хочу вернуть [{:page => 10, :cells => [{:name => "User A"}...]}], если params что-то типа {:action => "index", :format => "js", :grid => "flexigrid"}, и вернуть [#<User name='User A'>...], визуализированный в шаблоне haml, если это простоhtml.

Как мне сделать это RESTful в Rails с унаследованными ресурсами?

Примерно так:

class UsersController < InheritedResources::Base
  respond_with :js, :method => :find_and_return_for_grid
end

Требуется ли мне создание собственного респондента

1 Ответ

1 голос
/ 07 октября 2010

Вам нужно переопределить метод индекса, что-то вроде:

def index
  index! do |format|
    format.html
    format.js do
      if(params[:grid] == "flexigrid")
        render :json => format_for_grid(collection).to_json
      end
    end
  end
end

С помощью format_for_grid - метода, который преобразует массив пользователей в формат данных, который вы хотите

Лично говоря, я победил 't Отформатировать ответ js следующим образом. Я имею в виду, что разделение ответа в ячейках - это то, что я хотел бы сделать на стороне просмотра с помощью js, потому что это связано с тем, как вы хотите отображать данные, я думаю, что было бы вкуснее.коллекция, не ориентированная на отображение. to_json

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