sfctanakalab / local_garage

1 stars 0 forks source link

printers/index.html.erbのページ内検索の実装方法 #18

Open Masa321 opened 10 years ago

Masa321 commented 10 years ago

やりたいこと。 @printers.materialのor(ABSorPLAの文字列で検索して表示) @printers.material_colorのor @使用可能状態での条件表示 それぞれの条件はANDで表示する。 *プリンター一覧にあるサイズによる検索は排除します。

最終的に@printersに格納された情報を一覧に表示するので、 いま実装している方法だと難しい。

kenfjy commented 10 years ago

検索のインタフェースを作り込む必要あり。 1と2はFilament.where("color = ? or material = ?", "red", "ABS")とかして、Filamentを検索した後に、そのFilamentを所持しているプリンタAND使用可能、で検索すればOK。

kenfjy commented 10 years ago

このためにテーブルの再構成をしました。 0a85f51118da49f597119ddf004f84ffc7cda0e5

kenfjy commented 10 years ago

現在、この検索は以下のコードを実行すればよい。 "red" "ABS" trueで検索をかけるとすると(当然、どれかが欠けているときはこの限りではない)、

f = Filament.where("color = ? or material = ?", "red", "ABS")
p = f.printer.where(condition: true)
Masa321 commented 10 years ago

ここ勉強を兼ねて理解したいので、丁寧に教えてほしい。 例えば、materialはABSで色はredとyellowのフィラメントを持つプリンターを表示するなどの構成をどのように実装すればいいのか教えてほしい。

論理和としてのロジックをUIの構成を含めた上で理解して実装できると後の開発に役立つと思われ。

Masa321 commented 10 years ago

金曜日に会った際にでも!

kenfjy commented 10 years ago

承知です!

Masa321 commented 10 years ago

間違ってたらごめん。

Printerモデルにbelongs_to :filament、Filamentモデルにhas_many :printer と書いてあるけど、これは逆なのでは?

Masa321 commented 10 years ago

has_and_belongs_to_many DBのprinter_idを消して、 新しくprinters_filamentsテーブルの作成

Masa321 commented 10 years ago

http://qiita.com/gotohiro55/items/6d075fd40058e7b56752 http://qiita.com/gotohiro55/items/0d76ac9412b04a431e32

Masa321 commented 10 years ago

プリンター新規作成のUXについて。 色の選択肢は有限なのである程度staticにする。 素材はユーザの入力により随時種類を追加できるようにしたいが、自由に入力されると困る。利用者が検索する際の大事な要素になるので。 現時点ではstaticなpre-definedな選択肢による入力>filamentテーブル内のidと照合して、新規作成されたprinter_idと結ぶことにする。

後にDBからの選択肢の出力と、新しい種類の追加を行えるようにする。

kenfjy commented 10 years ago

「TypeError: tgtInput is null」というエラーが出ている。具体的には下記の箇所。 tgtInput.onkeydown = incSearch;

Masa321 commented 10 years ago

timeout あきらむ

kenfjy commented 10 years ago

終わるまではcloseしない。