Railsアプリケーション開発体験(2)


本は前回に続く
Railsアプリケーション開発体験(1)
今回は具体的に開発された技術問題を記録し始めました...
業務情報の基本的なCRUDはもうくだらないことではなく、静的scaffoldによって生成されたページはすべての機能を備えており、自分の必要に応じて統合を調整すればよい.
ファイルのアップロード
アプリケーションには画像アップロード機能が必要で、ファイルアップロードはアプリケーション開発で出会った最初の「厄介な」問題で、手元のRails開発書籍やネット上で見つけた資料にはRails処理画像アップロードの処理コードがあるが、いずれも点がついているようで、全面的ではなく、自分がつまずいてやっと開発が通過した.いくつかの詳細を記録して他の開発者に参考を提供します.
まずファイルアップロードで使用するフォームコントロールは
form.file_field.ここでファイルのアップロードを処理するのは主にピクチャで、ピクチャを直接データベースフィールドに保存するつもりはなく、ピクチャをルールに従って名前を変更して指定したピクチャフォルダに保存し、データベースフィールドにピクチャファイル名を記録します.
画像を直接Model属性に従ってデータベースフィールドに保存する方法については詳しくは言いませんが、本やネットではこの方法を紹介する例が多く、主にサーバ側がアップロードファイルをどのように再処理するかについて話しています.
このコントロールを使用すると、フロントページに直接ファイルアップロードコントロールが表示されます.肝心なのは、サービス側がアップロードしたファイルをどのように受信するかです.開発時に注意してください.
form.file_フィールドで指定したobject_nameはModelでファイルのアップロード方法を処理するfunction_である.name,
object_nameとfunction_nameは一致しなければならない(以下の2つのサンプルコードのimgに注意).
Viewの例

<tr>
  <td>    :</td>
  <td><%= f.file_field :img %></td>
</tr>

Modelの例

class Item < ActiveRecord::Base
  
  #       
  def img=(file)    
    file_name = file.original_filename    
    file_data = file.read
    
    #                
    file_name = Time.now.strftime("%y%m%d%H%M%S") + "." + file_name.split(".")[-1]
    #    self.img_url Model     ,        img_url
    self.img_url= file_name
    
    File.open(RAILS_ROOT + "/public/images/template/" + file_name, "wb") { |f| f.write(file_data) }
  end
end

時間の書式設定
時間フォーマットは表示時によく使われ、比較的簡単です.使用
strftimeメソッド、具体的なフォーマットキーワードは自分でAPIを調べましょう.

#           09-12-28 14:33
time_str = Time.now.strftime("%y%m%d %H:%M")

Modelにはどのような属性がありますか?
これはくだらない話かもしれませんが、少なくとも私が初めて開発したときはよく知らなかったので、記録しておきましょう.宣言されたModelのプロパティをgenerate scaffoldで表示するほか、各Modelオブジェクトには3つの自動生成プロパティがあります.
1. id
2. created_at
3. updated_at
フィールドの意味は明らかですが、必要に応じて呼び出しを選択しましょう.
日付コントロールdate_select
Railsに付属の日付コントロール
form.date_selectは非常に便利で、年月日のオプションリストを直接表示します.しかし、デフォルトで生成されたオプションの日付範囲は現在の時間の前後各5年で、私のところは日付コントロールで会員の誕生日を表す必要があります.前の5年はきっと足りないでしょう.APIを探して、中には明確なパラメータの説明があって、私に役に立ちます:
1.年の開始時間、終了時間を指定できます.通過:start_year, :end_year指定
2.月の時間は英語ではなく、直接数字を表示します.month_numbers指定
3.デフォルト年はxxxxで、:defaultで指定
サンプルコード

<%= f.date_select :birthday, :default => {:year => 1980, :month => 1, :day => 1}, :use_month_numbers => true, :start_year => 1960, :end_year => 2000 %>

今日はここまで記録しておきましょう、To Be Continue...