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

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

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

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

2回答

2341閲覧

Ruby On Rails マイページ内の情報を検索(絞り込み)したい

fkryu

総合スコア31

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2017/04/06 12:00

###前提・実現したいこと
Userマイページがあり、そのマイページでuserが投稿した情報を表示しています。
自分が投稿した情報をマイページ内で検索できるようにしたい。

###該当のソースコード<view>

views/buildings/show.html.erb ↓↓↓↓検索フォーム↓↓↓↓ <%= search_form_for @q, url: building_path do |f| %> <%= f.search_field :name_or_address_cont %> <%= f.submit "さがす" %> <% end %> . . . ↓↓↓↓自分が投稿した情報の一覧↓↓↓↓ <% current_user.buildings.availables.each do |buildings| %> <div class = "a"> <%= image_tag buildings.building_image_url %> </div> <div class = "b"> <%= buildings.name %> </div>

###該当のソースコード<model>

models/buildings.rb scope :availables, -> { Building.where(deleted_flg: false)}

###該当のソースコード<controller>

controllers/buildings_controller.rb def show @buildings = Building.availables.find_by(user_id: params[:user_id]) @q =Building.availables.search(name: params[:q]) @buildings = @q.result(distinct: true) end

###発生している問題・エラーメッセージ

エラー等はなく、自分が投稿した情報は表示されているのですが、検索ボタンをクリックしても更新(絞り込み)されません。 viewの<% current_user.buildings.availables.each do |buildings| %>の部分が問題なのかなと思っているのですがなかなかできずにいます。

初心者ですがアドバイスよろしくお願いします。

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

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

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

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

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

guest

回答2

0

自己解決

def show
@q =current_user.buildings.availables.search(params[:q])
@buildings = @q.result(distinct: true)
end

<% @buildings.each do |buildings| %>

投稿2017/04/06 14:48

fkryu

総合スコア31

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

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

0

超テキトーで確認もしてないですが、

controllerの下記部分
@q =Building.availables.search(name: params[:q])

@q =Building.availables.ransack(params[:q])

とかでしょうか。(Ransack gemを利用しているという前提です。)

修正・追記

すいません、適当過ぎました。上は無視してください。なお、やっぱり動作確認はしていません。

modelに、下記scopeを追加
:user_only, -> (user_id){user_id: user_id}

controllerで
@q =Building.availables.user_only(params[:id]).search(params[:q])

view部分を
@buildings.each do
にする。

とかですかね。

参考リンク

投稿2017/04/06 12:55

編集2017/04/06 14:34
amaranthine

総合スコア501

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

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

fkryu

2017/04/06 13:42

回答ありがとうございます。できませんでした。。
amaranthine

2017/04/06 14:11

あとは、availablesを外すとかでしょうか。
amaranthine

2017/04/06 14:13

あ、すいません、viewのcurrent_user.buildings.availables部分を、@buildings.each doにするだけっぽいですね。
fkryu

2017/04/06 14:26

それだと自分の投稿だけでなく全ての投稿が表示されてしまいます。。@buildings.each doとcurrent_userをうまく合わせる方法がないか探しているのですが。。。
amaranthine

2017/04/06 14:34

すいません、適当すぎました。回答を修正しました。
fkryu

2017/04/06 14:38

scope :user_only, -> (user_id){user_id: user_id} でシンタックスエラーが起きています。。
fkryu

2017/04/06 14:48

解決いたしました。回答ありがとうございました。
amaranthine

2017/04/06 14:50

scope :user_only, -> (user_id){ where(user_id: user_id) }でした。すいませんでした。テキトーに回答するのはもうやめます。
fkryu

2017/04/07 00:15

いいえ。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問