見出し画像

CRUD を作成⑥

CRUD を作成⑤ の続き。
前回は詳細ページの表示に成功したが、表示されるデータが常に同じという問題があった。
app/controllers/books_controller.rb のコードは現在以下のようになっている。

def show
  @book = Book.find(1)
end

現状のコードは find の引数に 1 と指定されている。この値が常に固定されているため、表示されるデータが常に同じという問題が発生している。
これを以下のように修正する。

def show
  @book = Book.find(params[:id])
end

テストを実行する。

bundle e rspec spec/requests/books_spec.rb

グリーンになる。しかし、テストを修正しておく。

describe "GET /books/:id" do
  let(:book) { create(:book) }

  it "returns http success" do
    get "/books/#{book.id}"
    expect(response).to have_http_status(:success)
  end
end

テストを実行する。グリーンになる。
問題なさそうなので、一覧ページから遷移できるか確認する。


それぞれのリンクに遷移して、それぞれのデータが表示されることを確認する。

app/views/books/show.html.erb に以下のコードを追加する。

id: <%= @book.id %><br />
タイトル: <%= @book.title %>

表示を確認する。


詳細ページから一覧ページへ戻ることができるようリンクを追加する。
以下のコードを追加する。

<br />
<%= link_to '一覧', books_path %>

表示を確認する。


一覧のリンクを押して一覧ページに遷移できることが確認できたら成功。
に続く。


この記事が気に入ったらサポートをしてみませんか?