🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1928閲覧

kaminariを使用し、「もっと見るボタンを」追加したいのですが、エラーが出てしまいました。

ueda_kesuke

総合スコア34

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/12/29 13:07

gem kaminari を利用してもっと見るボタンを追加したいのですが、エラーとなってしまいました。

イメージ説明
参考にした記事はこちらです。
もっと見るボタンの実装

##コード
↓ index.html.erb

<table class="table"> <div id="article_lists"><%= render 'work_list' %></div> <div class="more"><%= link_to_next_page @works, 'もっと見る', remote: true, id: 'view_more' %></div> </table>

↓ _work_list.html.erb
(部分テンプレートです)

<% @works.each do |work| %> <div class="work_box"> <%= link_to(work_path(work)) do %> <%= attachment_image_tag work, :image, :fill, 190, 154,fallback: "no_image.jpg", size:'190x154', format: 'jpeg' %><br> <div class="work_box_item"> <strong><%= work.title %></strong> <p> <%= work.created_at.strftime('%Y/%m/%d') %> </p> </div> <% end %> </div> <% end %>

↓ works_controller.rb

controller

1def index 2 @works = Work.where(status: :true).order(created_at: :desc).page(params[:page]) 3end

↓ index.js.erb

$('#article_lists').append("<%= escape_javascript(render 'work_list', object: @works) %>"); $("#view_more").replaceWith("<%= escape_javascript( link_to_next_page(@works, 'もっと見る', remote: true, id: 'view_more')) %>");

##試したこと
index.js.erbobjectの部分をworksにして部分テンプレートの@worksworksにしてみた。
また別のエラー文が出たため元に戻している。
(worksが定義されていないというエラーだった)

足りない情報などあれば教えていただけると幸いです。
どうかご教授いただきたいです????‍♂️

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SQLite3::SQLException: no such column: works.status: SELECT "works".* FROM "works" WHERE "works"."status" = ? ORDER BY "works"."created_at" DESC LIMIT ? OFFSET ?

works テーブルに status というカラムが見つかりません というエラーが発生しているようです。worksテーブルに status カラムが存在するのが意図に一致した動作か確認し、一度マイグレーションをやり直してみてはいかがでしょうか?

bundle exec rails db:migrate:reset でマイグレーションを最初からやり直すことができます。(データベースの中身が空白に戻ってしまうので、バックアップが必要な場合は別途取得してから実行してください。

投稿2019/12/29 13:36

motchang

総合スコア101

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ueda_kesuke

2019/12/30 00:46

ありがとうございます。一度`rails db:migrate:reset`を実行し、データベースをリセットしたのですが、同じエラーが続いてしまっています。 controllerから部分テンプレートまでうまくデータが伝わっていないのでしょうか?
motchang

2019/12/30 01:28 編集

コントローラーの @works = Work.where(status: :true) の部分で works テーブルの status カラムが true であることという条件が記述されていますが、works テーブルに status カラムが存在し、これが true であるもののみ取得するという振る舞いは意図的ですか? そうでなければ .where(status: :true) を単純に削除すれば動作するかと思われます。
ueda_kesuke

2019/12/31 09:45

ご指摘の通りでした!てっきりそういうカラムがあるのかとdbばかりみていました。本当にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問