【问题标题】:HTTParty cannot get id of albumHTTParty 无法获取专辑的 id
【发布时间】:2019-10-21 20:36:51
【问题描述】:

我正在构建一个 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

但是,当我将鼠标悬停在按钮上时,它会链接到以下内容

如何只链接到 ID,即 localhost:3000/albums/2

更新 1

routes.rb

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

  root 'albums#index'
end

【问题讨论】:

  • 您没有必要或不希望放入诸如“UPDATE 1”之类的标签或标题。 SO 有一个修订跟踪系统,因此我们可以查看是否有更改。相反,只需将任何更新或更改合并到问题的文本中,就好像您最初拥有它一样。它有助于保持可读性。

标签: ruby-on-rails ruby ruby-on-rails-5 httparty


【解决方案1】:

这应该很容易。

这是您获取专辑 ID 的方式:

album['id']

并且可以使用ID获取链接:

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

警告:路径必须是单数!专辑路径

# add to your routes.rb
resources :albums

【讨论】:

  • 是的,我真的对铁轨生锈了哈哈,所以重新开始吧。我试过你的解决方案,我得到/albums.1 不是斜线而是点
  • @B.J.B 试试上面的路线助手 - 我已经编辑了答案
  • 实际上您必须粘贴现有路线。或者你可以在你的routes.rb 文件中写resources :albums 它可能会创建一些额外的路由,但这应该可以。
  • 不幸的是,我仍然得到一个点
  • 哎呀,我犯了一个错误。使用album_path SINGULAR。我会更新答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多