質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

1503閲覧

kaminariでのページネーションを非同期で実装したい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/10/29 03:45

実装したいこととしてはタイトルのとおりです。(同期通信での実装は完了しています。)
現状としては、部分テンプレートの読み込みの段階で以下のエラーが発生しています。

error

1ActionView::Template::Error (undefined local variable or method `laundry' for #<#<Class:0x00007fa4a47abcc8>:0x00007fa4afdd8dc0> 2Did you mean? @laundry): 3 1: $("#store").html("<%= j(render partial: 'laundry', locals: { laundry: laundry}) %>");

エラー文章の指示にあるようにindex.js.erbのlocalesの部分をlocals: { laundry: @laundry}としてみましたがまた別のエラーが発生しています。

ActionView::Template::Error (undefined method `image' for Ransack::Search<class: Laundry, base: Grouping <combinator: and>>:Ransack::Search):

そもそも@laundryは検索機能(ransack)を実装するために定義しているためこのようなエラーが出ることはわかります。
index.js.erbで部分テンプレートに渡す引数の指定がうまくできておらずエラーが発生しているのではないかと考えているのですが、どのように修正をすれば良いのかがわかりません。

わかる方いましたら、アドバイスをいただきたいです。
よろしくお願い致します。
以下、関係箇所のコードです。

controller

1 before_action :search_laundry, only: [:index, :search] 2 3def index 4 @laundries = Laundry.order('opening_date DESC').page(params[:page]) 5 respond_to do |format| 6 format.html 7 format.js 8 end 9 end 10 11 private 12 13 def search_laundry 14 @laundry = Laundry.ransack(params[:q]) 15 end

↓index.js.erb

view

1$("#store").html("<%= j(render partial: 'laundry', locals: { laundry: laundry}) %>");

↓index.html.erb

view

1<div class="store-contents"> 2 <ul class="store-lists"> 3 <% @laundries.each do |laundry| %> 4 <div id="store"> 5 <%= render partial: 'laundry', locals: { laundry: laundry}%> 6 </div> 7 <% end %> 8 </ul> 9 <%= paginate @laundries, remote: true %> 10 </div>

部分テンプレートは以下のようになっています。

ruby

1<li> 2 <div class="card" style="width: 18rem;"> 3 <%= image_tag laundry.image, class: 'card-img-top', width:"100%", height:"180"%> 4 <div class="card-body text-center"> 5 <p class="card-text mb-3"><%= laundry.name %></p> 6 <div class="btn"> 7 <%= link_to '詳細', laundry_path(laundry.id), class: 'show-btn' %> 8 <% if user_signed_in? && current_user.admin? %> 9 <div class="hidden-btn"> 10 <%= link_to '編集', edit_laundry_path(laundry.id), class:"badge badge-light px-3 py-2 mr-2" %> 11 <%= link_to '削除', laundry_path(laundry.id), method: :delete, class: "badge badge-danger px-3 py-2", data: { confirm: '削除を実行します。よろしければOKをクリックしてください。' } %> 12 </div> 13 <% end %> 14 </div> 15 </div> 16 </div> 17</li> 18

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問