Rails: Todo 検索その壱: ユーザからの入力2006年11月26日 08時23分04秒

さて、折角なので Todo に検索機能を付けたい。

まず最初に思いついたのが、app/views/user/login.rhtml からの流用。


  <div class="form-padding">
    <%= start_form_tag :action => 'login'  %>
      <table>
        <%= form_input :text_field, "Login ID", "login", :size =< 30 %><br/>
        <%= form_input :password_field, "Password", "password", :size => 30 %><br/>
      </table>
    <%= end_form_tag %>
  </div>

の部分を app/views/todos/search.rhtml に複写した。action を result に変え、フォームに付けられる名前も keyword に変更した。

  <div class="form-padding">
    <%= start_form_tag :action => 'result'  %>
      <table>
        <%= form_input :text_field, "Keyword", "keyword", :size => 30 %><br/>
        <%= form_input :password_field, "Password", "password", :size => 30 %><br/>
      </table>
    <%= end_form_tag %>
  </div>

search ページで検索項目を入力を受け付けて、result ページで表示しようというわけだ。

ユーザの入力は app/controllers/todos_controller.rb ないの result 関数内で参照出来るはずだ。さて、ここまで書いたが、どうやればユーザの入力値を得ることが出来るのかを知らない。そこで、検索をした。あまり馴染みの無い事柄を検索する時は、何をキーワードに探せば目的の物が見つかるのか、検討が付けづらいので時間が掛かる。

2005-07-25 優しいRailsの育て方 に関数に渡される変数を単純に表示する方法が述べられていた。


  def result
    render :text => @params.inspect
  end

を app/controllers/todos_controller.rb に記述した。app/views/todos/result.rhtml はまだ、準備していない。http://localhost:3000/todos/search で test と入れて Result ボタンを押すと、
{"user"=>{"password"=>"", "keyword"=>"test"}, "commit"=>"Result", "action"=>"result", "controller"=>"todos"}
と表示された。

@params へのアクセスの仕方を変え、app/views/todos/result.rhtml を作って、少し試行錯誤した後に


  def result
    @keyword = @params[:user][:keyword]
  end

とやると、@keyword に test が代入されたのが確認できた。

前回次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2006/11/26/969831/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。