ruby on rails を用いて、簡単なツイートが出来るアプリケーションを開発しています。
タイトルにあるようなシステム構成を考えています。検索用のプラグインとしてransackを使用しています。ユーザーについては、複数条件を入力して検索が出来るようにしたいと思っています。
「新規ユーザー」のボタンを押してモーダル画面が出力されて、その画面上でユーザーを検索して選択出来るようにしてみました。
以下、ransack を用いた viewと controller のソースを示します。controllerの部分は、privateメソッドの箇所で、strong parameter を使っています。model としては、userが複数の post を持っている、という関係です。
(app/views/posts/new.html.erb)
html
1<div class="modal-body"> 2<%= search_form_for(@q, html: { method: :get, class: 'form-horizontal', role: 'form' }) do |p| %> 3<!--(中略)--> 4 <table class="table"> 5 <thead> 6 <tr> 7 <div class="col-sm-1">#</div> 8 <div class="col-sm-4">アカウント名</div> 9 <div class="col-sm-2">姓</div> 10 <div class="col-sm-2">名</div> 11 <div class="col-sm-3">Eメール</div> 12 </tr> 13 </thead> 14 <tbody> 15 <tr> 16 <div class="col-sm-1"> 17 <%= p.text_field :user_id_cont, 18 :class => 'col-sm-1 form-control', 19 :placeholder => '選択' %> 20 </div> 21<!--(中略)--> 22 </tbody> 23 </table> 24<% end %> 25</div>
(app/controllers/posts_controller.rb)
ruby
1def new 2(中略) 3 4 @q = User.ransack(search_params) 5 @selected_users = @q.result.order(availability: :desc, code: :asc).decorate 6end 7 8(中略) 9 10private 11def search_params 12 search_conditions = [ 13 user_id_cont, user_account_cont, last_name_cont, first_name_cont, email_address_cont 14 ] 15 params.require(:q).permit(search_conditions) 16 end
ここで rails serverを立ち上げた際に
undefined local variable or method `user_id_cont' for #Admin::PostsController:0x007f935b8026e0
というエラーが出ました。
ransack で検索する際のパラメータの設定に問題がありそうです。確認すべき点、修正すべき点ありましたらご指摘をお願いします。
あなたの回答
tips
プレビュー