2012-03-24 4 views
2

私はWebプロジェクトの星評価システムを実装しました。ベストプラクティス - DRY違反レール<-> JavaScript

レールのバックエンドで星の数が計算され、表示されます。 私はajaxを介して動的評価を実装しました。したがって、星の評価を動的に更新する必要があります。

これを達成するために、私は単純にレールコードを複製し、JavaScriptで再実装しました。このソリューションは機能しますが、DRYの原則に大きな違反のように思えるので、私はそれには本当に満足していません。

この問題のベストプラクティスは何ですか? JavaScriptによるすべての星評価を計算しますか?

可能な解決策はうれしいです。

答えて

2

この評価を計算するアクションに対してAJAX getリクエストを行うことができます。このアクションでは、リクエストがAJAXのものかどうかを確認してから、関連するビューを表示する代わりに計算された値を返します。

あなたは、respond_torequest.xhr?の方法などで、JSONのレンダリングに精通していると仮定します。

1

Ajaxコール(「私はAjax経由で動的評価を実装しました」)を既に行っている場合は、レスポンスを送信する前に計算を行い、その結果をレスポンスに追加してください。

+0

これはもちろん可能です。問題は次のとおりです: - "レート"リンクはフロントエンドの表示されたレーティングに直接接続していません.jQueryセレクタを使用してajaxコールバックの後にレーティングを検索しています。 - レーティング自体は3つの数字で構成されています:レーティングの合計数、完全な星の数、レーティングを視覚的に表す半分の星の数 私ができることは、戻り値の番号に従って、javascriptを使ってスターアイコンをレンダリングするだけです。 これは適切な解決策ですか? (すべての星アイコンはjsでレンダリングされ、レールバックエンド経由では表示されません) –

0

私は以下のソリューションで行くことにdecived:

  • は(なしフルと空の星の)レールのバックエンドで評価を計算
  • 星評価
  • をレンダリングする部分図を書きますレート機能のためのAJAXの応答として
  • リターン部分「ノーマル」ビューでは、部分的には、定格電流は
0 jQueryの経由で応答によって置き換えられて含ま

私は、小さな部分的な小さなhtmlオーバーヘッドを無視することができると思います.Jsonを返してJavaScriptで書式を設定するよりもsleakerです。

関連する問題