HTTParty не может получить идентификатор альбома - PullRequest
1 голос
/ 21 октября 2019

Я создаю приложение rails и пытаюсь получить некоторые данные из API.

Это мой контроллер

require 'will_paginate/array'

class AlbumsController < ApplicationController
  def index
    @albums = HTTParty
      .get('https://jsonplaceholder.typicode.com/albums', :headers => {'Content-Type' => 'application/json'})
      .paginate(:page => params[:page], :per_page => 10)
  end

  def show
  end
end

и это мое индексное представление

<main role="main" class="flex-shrink-0">
  <div class="container">
    <h1 class="mt-5">Albums</h1>
    <p class="lead">Here we show all albums and it's details</p>

    <div class="row">
      <% @albums.each do |album| %>
        <div class="col-md-4">
          <h5 class="card-title">
            <%= album['title'] %>
          </h5>

          <p>User_id: <%= album['user_id'] %> | id: <%= album['id'] %><p>
          <%= link_to "View Album", album, class: "btn btn-primary" %>
        </div>
      <% end %>
    </div>
  </div>

  <%= will_paginate @albums, renderer: WillPaginate::ActionView::BootstrapLinkRenderer, class: 'margin-auto' %>
</main>

Проблема здесь заключается в ссылке, у меня есть resources :albums в файле маршрутов.

                               albums GET    /albums(.:format)                                                                        albums#index
                                      POST   /albums(.:format)                                                                        albums#create
                            new_album GET    /albums/new(.:format)                                                                    albums#new
                           edit_album GET    /albums/:id/edit(.:format)                                                               albums#edit
                                album GET    /albums/:id(.:format)                                                                    albums#show
                                      PATCH  /albums/:id(.:format)                                                                    albums#update
                                      PUT    /albums/:id(.:format)                                                                    albums#update
                                      DELETE /albums/:id(.:format)                                                                    albums#destroy
                           users_show GET    /users/show(.:format)                                                                    users#show
                                 root GET    /                                                                                        albums#index

Однако, когда я наведите курсор мыши на кнопку, она указывает на следующее

image

Как мне перейти только на соединение с идентификатором, т.е. localhost: 3000 / album / 2

UPDATE 1

rout.rb

Rails.application.routes.draw do
  resources :albums
  get 'users/show'

  root 'albums#index'
end

1 Ответ

1 голос
/ 21 октября 2019

Это должно быть просто.

Вот как вы получаете идентификатор альбома:

album['id']

И вы можете использовать идентификатор, чтобы получить ссылку:

<%= link_to "View Album", album_path(album['id']), class: "btn btn-primary" %>

Внимание: путь должен быть единственным! путь_альбома

# add to your routes.rb
resources :albums
...