Рендеринг двух элементов JSON в Rails - PullRequest
0 голосов
/ 21 апреля 2019

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

Мне нужно отобразить два элемента JSON здесь в моем методе индекса в моем контроллере:

 def index
    @user = User.all
    @libraries = Library.all.order(:created_at)

    user_cards = current_user.libraries

    render :json => @libraries, :include => :user
    render :json => user_cards
  end

Я попытался сделать это так (не удалось с ошибкой 500):

render :json => @libraries, user_cards, :include => :user

И я также попытался сделать это таким образом (также не удалось с ошибкой 500): render :json => @libraries :include => [:user, :user_cards]

UPDATE

Это самая последняя попытка правильно отобразить json:

def index
    @user = User.all
    @libraries = Library.all.order(:created_at)

    user_cards = current_user.libraries

    render json: {
      user_cards: user_cards,
      libraries: @libraries.as_json(include: [:user])
    }
  end

Проблема в том, что теперь я получаю сообщение об ошибке libraries во всем приложении. Если я просто отображаю json, как у меня изначально (render :json => @libraries, :include => :user), я не получаю эту ошибку. Итак, я предполагаю, что способ, которым я имею это, все еще не корректен. Точная ошибка на libraries вызывается в одном из моих компонентов React, где я использую фильтр:

Ошибка: Uncaught TypeError: this.props.librarys.filter is not a function

Расположение ошибки:

let filteredCards = this.props.librarys.filter(
        (library) => {
          return library.title.toLowerCase().indexOf(this.state.search.toLowerCase()) !== -1 || library.desc.toLowerCase().indexOf(this.state.search.toLowerCase()) !== -1
        }
      )

1 Ответ

1 голос
/ 21 апреля 2019

Контроллер может вернуть только один ответ, вы можете достичь этого, комбинируя эти два возврата в один:

respond_to do |format|
  format.json  { render json: { user_cards: user_cards,
                                libraries: @libraries } }
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...