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

我使用 create 是因为当我 rake 路由时,post 函数会创建。它不能正常工作,是因为我找到 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 回答