在link_to上单击调用多个控制器方法

时间:2013-11-12 01:24:48

标签: javascript ruby-on-rails pay-per-click

我正在努力在我的应用上运行按点击付费系统,并且我已经能够在SO上设置框架方面获得一些帮助。这是我到目前为止所得到的:

class Click < ActiveRecord::Base
    belongs_to :deal
    belongs_to :vendor
end

class ClicksController < ApplicationController
    def create
        @deal = Deal.find(params[:deal_id])
        @deal.clicks.create
    end
end

class Deal < ActiveRecord::Base
    belongs_to  :vendor
    has_many    :clicks
end

我希望能够在我有一个link_to交易资源时随时调用我的create方法。点击该用户将被带到该交易视图,所以我不想替换link_to中的默认方法。有没有办法在link_to上调用第二个方法?或者使用javascript可能是更好的解决方案?说实话,我对RoR比较陌生,而且我根本不懂javascript。有关如何最好地完成此任务的任何建议?提前谢谢!

1 个答案:

答案 0 :(得分:1)

听起来你想要以下内容:

  • 用户点击会导致交易的链接
  • 为该交易创建了一个点击
  • 用户看到了交易页面

我认为有两种不错的方法可以做到这一点。一种是将链接视为对ClicksController执行POST的按钮。另一种是在DealsController上有一个after_filter。

前者意味着将链接更改为指向ClicksController,使用POST(默认情况下指向#create操作),并在#create操作结束时进行重定向

redirect_to @deal

有关详细信息,请参阅link_to docs

虽然link_to可能看起来有些难看,但感觉更加RESTful。

后一种选择意味着添加类似

的内容
after_filter -> { @deal.clicks.create }

用于DealsController#show方法。