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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

1回答

1892閲覧

acts-as-taggable-onのtagged_withでモデルオブジェクトを生成すると、form_forでエラーになる

DaiAoki

総合スコア67

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2017/04/20 14:06

編集2017/04/20 14:08

Ruby on Rails(Rails 5.0.1, Ruby 2.4.0)にacts-as-taggable-onを導入して、指定タグが付けられたデータだけをtagged_withで取得して、form_forで表示しようとしたところ、下記のエラーが発生しました。

NoMethodError undefined method `to_key' for #<Bookpost::ActiveRecord_Relation:0x007fd5c39dd398> Did you mean? to_set to_ary <%= form_for(@bookpost) do |f| %>

tagged_withを使わずにモデルオブジェクトを生成した際には正常に動作するため、生成されたモデルオブジェクトを調べたところ下記のようになっていました。

■tagged_withを使った場合
<ActiveRecord::Relation [#...

■使わなかった場合(正常に動作)
<ActiveRecord::Associations::CollectionProxy [#...

このあたりが原因だと目星は付けられたものの、解決策が思いつきません。

どなたか詳しい方がいらっしゃいましたら、お力を貸していただけますでしょうか。
よろしくお願いします。

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

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

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

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

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

moke

2017/04/21 05:11

おそらく、acts-as-taggable-onと直接的に関係のないところで発生したエラーでしょう。<%= form_for(@bookpost) do |f| %>以下とcontrollerも表示してください。
guest

回答1

0

自己解決

mokeさん

追記のご依頼ありがとうございます。
今日1日悩んで自己解決してしまいました。
エラーの原因ですが、そもそもtagged_withの呼び出し対象が誤っていたことでした。

具体的には、コントローラ側で、
@bookpost = params[:selected_tag].present? ? current_user.bookposts.tagged_with(params[:selected_tag]) : current_user.bookposts.build
としていたのですが、そもそもここの目的はフォームで送信されたデータを保存するためのモデルオブジェクトの作成でした。(buildを見落としてしまっていました。)

@feed_items = params[:selected_tag].present? ? current_user.feed.tagged_with(params[:selected_tag]).paginate(page: params[:page]) : current_user.feed.paginate(page: params[:page])
とすることで無事に該当するタグの投稿だけを表示することができました。


今回一歩進展したことで、新たな不具合が発生し、
投稿のタイトルとずれてしまうため、別で質問を立てるのですが、
もしよろしければ、そちらの質問も見ていただくことは可能でしょうか?

Tag-itでタグフォームを生成しているのですが、タグの絞り込み検索結果の表示をレンダリングしたところ、投稿フォームのタグ入力部が表示されなくなるという現象についてです。

投稿2017/04/21 14:16

編集2017/04/21 14:18
DaiAoki

総合スコア67

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

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

moke

2017/04/22 02:44

自己解決できて、よかったですね。 railsで質問するときは多言語に比べ少ない記述でも推測できるのですが 最低でもcontrollerとviewは全て書き込んでください。
DaiAoki

2017/04/22 13:27

ありがとうございます。 ちなみに、controllerとviewは下記の質問に記載のようになっています。 < https://teratail.com/questions/73352 > もしご存知でしたら、こちらの方の助言もいただけると助かります。 よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問