Ruby on Rails Pro

Ue リストへ戻る 

質問内容

題名 登録者 登録日時
mislav-will_paginate 迷羊 2009/10/28 06:01
内容
servers_controller.rb
class ServersController < ApplicationController
  def index
    @servers = Server.paginate(:page => params[:page], :per_page => 20, :order => 'device_id ASC')
    respond_to do |format|
      format.html 
      format.xml  { render :xml => @servers }
    end
  end

  def search
    @servers = Server.paginate(:page => params[:page], :per_page => 20, :order => 'device_id ASC', :conditions => ["hostname like ?", "%"+params[:keyword]+"%"])
   render :action => 'index'
  end
end

Severs view index.html.erb

上記省略
<%= will_paginate @servers %>

これでindexは問題ないのですが、searchの方が次ページに行くと、
ActiveRecord::RecordNotFound (Couldn't find Server with ID=search):
  app/controllers/servers_controller.rb:26:in `show'

showは何も変更してません。
  def show
    @server = Server.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @server }
    end
  end

search後の1ページは何ら問題なく、検索も正常でshowも表示されます。
次ページ以降にエラーが出ます。
def searchもしくはviewに変更箇所はあるでしょうか?



回答 くるぶし
次ページ以降をクリックした先のURLは、パラメータに?page=2などと
表示があると思うのですが、それに続けて&keyword=hogeのようにkeywordのパラメータも引き継がれていますか?
引き継がれていないのであれば、params[:keyword]が見つからずエラーになっているのではないかと思います。
2009/10/28 17:24

回答 迷羊
ご指摘の通りクリック先には?page=2のあとに&keyword=hogeのようなパラメータはありません。
それで引き継がせ方なのですが、:page => params[:page]がすでにある上に、どのようにparams[:keyword]
を渡せばよいのでしょうか?

2009/10/28 23:28

回答 くるぶし
ちょっとググってみたところ
<%= will_paginate @servers, :params=>{:keyword=>params[:keyword]}%>でいけるみたいですよ。

参考
http://blog.livedoor.jp/maru_tak/archives/50611217.html
2009/10/29 00:59

回答 迷羊
<%= will_paginate @servers, :params=>{:keyword=>params[:keyword]}%>でいけました。
ありがとうございます。
2009/10/29 05:07

この質問に回答する

内容
お名前
画像認証
simple_captcha.jpg
 (画像のアルファベットを入力)

おすすめのレッスン

リンクを作成しよう(link_to)
ビューでは、レスポンスとして返す表示部分を記述します。RailsにはHTMLを生成するヘルパメソッドが多数存在します。その中でももっとも利用頻度の高いメソッドを紹介していきます。<%= link_to "こちら" ,:id=>31 %>を実行し...
2009/11/22 22:25



2009/11/22 22:27
Ruby on Rails 入門 Model モデル Control コントロール View ビュー Rmagick 画像編集 Ajax 動的ページ Paginate ページ分割 Test テスト Linux サーバ構築 Apacheサーバ Passenger(mod_rails) Railsアプリ公開 linux windows サーバ構築 Railsアプリ公開 windows ActionMailerでメール送信
© 2008-2009 maskana