1

私のページ(私が作成した)に5つ星評価のjQueryウィジェットがあります。クリック値を処理する関数が必要です。以前、これは私がやったことです:

$('.fivestar').each(function() {
    $(this).ratings(5, $js_tile_data[$posValue][6]).bind('ratingchanged', function(event, data) {
        $.post('jRating/send_rating.php?whichpage='+$page+'&id='+$js_tile_data[$posValue][0]+'&rating='+data.rating);
        $(this).clickable(false);
    });
});

今、私はRuby on Railsを使用していて、同じ効果を達成したいと思っています。新しいページなどをロードせずに、評価値をデータベースに保存します。また、可能であれば、ボタンやリンクなどをクリックする必要はありません。これを行う方法を理解しようとして私が見つけたものはすべて、リンク、フォーム、またはボタンが必要です。

どこを見るべきかについての助けや指示をいただければ幸いです。ありがとう!

さて、これは私が私の関数呼び出しに持っているものです:

$.post('/send_rating?whichpage=eat&id='+$js_tile["id"]+'&rating='+data.rating);

そして、send_raing_controller.rb:

class SendRatingController < ApplicationController
  def create
    @page = params[:whichPage]
    @id = params[:id]
    @rating = params[:rating]

    if (@page = "eat")
      @tile = EatTile.find(@id)
      @newVotes = @tile.num_votes + 1
      @newRating = (($tile.rating *@tile.num_votes) + @rating) / @newVotes
      @tile.num_votes = @newVotes
      @tile.rating = @newRating
    end
  end
end

ルートをレーキするとpost関数がcreateになるため、createを使用しました。正しく機能していません。EatPageの検索方法が原因でしょうか。または、正しく呼び出されていませんか。

ありがとう

4

1 に答える 1

1

あなたはすでに次のものを持っているかもしれませんが、必要なものを要約します

Railsがコントローラー、モデル、ビュー(MVC)でどのように機能するかをすでに知っていると思います

まず、リクエストを処理するためのコントローラーが必要です (post、get、put、またはその他に関係なく)。

次に、コントローラーで、params[:xxx] によって URL に渡すものを取得できます。

あなたの場合、params[:whichpage]、params[:id] ...

その後、テキストまたはjavascriptまたは必要なもので応答します。通常、js.erbを使用してjavascriptで応答し、ビューを更新するか、メッセージを警告します

または、事前定義された JavaScript コールバックを呼び出すだけでもかまいません。

于 2012-08-23T05:43:13.727 に答える