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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

1015閲覧

パーシャル側でform_with model:+コレクション を使いたい

pecchan

総合スコア592

Ruby on Rails 6

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

Ruby on Rails

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

0グッド

1クリップ

投稿2021/04/02 02:36

編集2021/04/02 03:03

rails6.1
初心者につき検討違いな質問してたらすみません。

元々、以下のようにしてましたが、
eachの中で繰り返しパーシャルを呼ぶのはパフォーマンスが悪いと知りました。
呼び出し側

ruby

1<% @questions.each do |question| %> 2 <%= render partial: 'show', locals: { question: question } %> 3<% end %>

そこで以下のように書き直したのですが、

ruby

1<%= render partial: 'show', locals: { collection: @questions } %>

下のようなエラーになりました。
イメージ説明

ruby

1undefined local variable or method `question' for #<ActionView::Base:0x0000000000b6f8> 2Did you mean? @questions

パーシャル側

ruby

1<%= form_with model: question, local: false do |f| %> 2 <div id="faq_<%= question.id %>"> 3 <dl class="faq"> 4 <%= render partial: 'question', locals: { question: question } %> 5 <%= render partial: 'answer', locals: { question: question, f: f } %> 6 </dl> 7 </div> 8<% end %>

渡し方に問題あるようですが、パーシャル側にどう渡したら良いのか分かりせん。

試したこと

下のようにしても同じエラーでした。

ruby

1<%= render partial: 'show', locals: { questions: @questions } %>

先輩方教えていただけないでしょうか?
宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

<%= render partial: 'show', collection: @questions, as: :question %>

こんな感じだといかがでしょうか。asでパーシャル内で扱う変数名を明示しています

パーシャルの書き方はこちらをご参考ください
https://guides.rubyonrails.org/layouts_and_rendering.html#local-variables

投稿2021/04/02 12:30

編集2021/04/02 12:31
hatsu

総合スコア1809

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

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

pecchan

2021/04/02 21:19

すごい!いけました! 有難う御座います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問