###実現したい事
Group内にPostを投稿できる仕組みです。modelに記載のように、GroupとPostの間に、GroupPostの中間リレーションがあります。groups/showページの検索フォームから、Groupに所属するPostのタイトルを検索できるようにしたいです。
検索をすると、以下のエラーが発生します。
error
1undefined method `post' for #<GroupPost::ActiveRecord_Associations_CollectionProxy:0x00007fbaa6c7a598>
以下、controller内の、4行目の「.post」が辺りが正しくないと思いますが、先に進めずにいます。
controller
1def show 2 @group = Group.find_by(id: params[:id]) 3 if params[:search] 4 @posts = @group.group_posts.post.search(params[:search]) 5 else 6 @posts = @group.group_posts 7 end 8 end
model
1class Group < ApplicationRecord 2 has_many :group_posts, dependent: :delete_all 3end 4class Post < ApplicationRecord 5 has_many :group_posts, dependent: :delete_all 6 7class GroupPost < ApplicationRecord 8 belongs_to :group 9 belongs_to :post 10 11 def post 12 return Post.where(id: self.post_id) 13 end 14 def self.search(search) #self.でクラスメソッドとしている 15 if 16 Post.where(title: "#{search}") 17 else 18 Post.all #全て表示。 19 end 20 end 21end
view
1<div id="search-box"> 2 <%= form_tag(search_path, :method => 'get') do %> 3 <div class="input-tag"> 4 <%= text_field_tag :search, '', placeholder: '検索', value: params[:title] %> 5 </div> 6 <div class="submit tag"> 7 <%= button_tag type: 'submit', class: 'btn btn-default' do %> 8 <i class="fas fa-search"></i> 9 <% end %> 10 </div> 11 <% end %> 12</div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/26 15:18
2021/03/26 15:26
2021/03/26 15:51
2021/03/26 15:57
2021/03/26 16:31
2021/03/28 00:31 編集
2021/03/28 00:55