###前提・実現したいこと
検索画面で検索結果をkaminariを使用して、pagenationしたいです。
controller
def search @user = current_user @data = Array.new if request.post? then f = '%' + params[:username] + '%' @data = User.where("name like ? or username like ?", f, f).page(params[:page]) end end
view
<h1>友達検索</h1> <% @post = Post.new unless @post %> ユーザー: <%= @user.name %><br/><br/> <%= form_tag("/posts/search", method: "post") do %> <%= label_tag(:username, "名前: ") %> <%= text_field_tag(:username) %> <%= submit_tag("検索") %> <% end %> <hr> <%= page_entries_info @data %> <% @data.each do |obj| %> <!-- 名前 --> 名前: <%= obj.name %> <!-- ユーザー名 --> @<%= obj.username %><br/> <!-- ツイート内容の表示 --> <% if obj.posts.blank? %> <!-- postされていなかった時の処理 --> <br/>ツイートはありません。<br/><br/> <% else %> <!-- postされていたら表示 --> <%= obj.posts.each do |ob| %><br/> <%= ob.body %><br/><br/> <%= ob.created_at.strftime('%Y-%m-%d %H:%M:%S') %><br/> <% break %> <% end %> <% end %> <hr> <% end %> <%= paginate @data %>
上記のようにコードを作成したのですが、エラーでうまくいきません。
<%= page_entries_info @data %>のところで、
undefined method `entry_name' for []:Arrayというエラーです。
何か、いい方法はありますでしょうか。
宜しくお願いします。
###試したこと
上記のcontrollerで以下のようにコードを作成しました。しかし、上記のようなエラーがまた出てきました。
f = '%' + params[:username] + '%' condition = User.find(:all, :conditions => ["name like ? or username like ?", f, f]) @data = Kaminari.paginate_array(condition).page(params[:page])
あなたの回答
tips
プレビュー