簡體   English   中英

Rails 5 ArgumentError(參數數量錯誤(1代表0)

[英]Rails 5 ArgumentError (wrong number of arguments (1 for 0)

在我的Rails 5應用程序中,我使用Public_Activity gem,並且試圖記錄一個活動,但是遇到錯誤: ArgumentError (wrong number of arguments (1 for 0).

我試圖在控制器中記錄活動,但是由於無法弄清楚如何指定模型實例( CanvasProduct )而遇到麻煩。 因此,我嘗試使用在文檔中找到的內容在模型中創建條目。

我的控制器(創建CanvasProduct ):

def add_product
  product = Product.friendly.find(params[:product_id])        
  if @canvas.canvas_products.create product: product
    render nothing: true, status: :created
  else
    render nothing: true, status: :bad_request
  end
end

我的模特

class CanvasProduct < ActiveRecord::Base
  belongs_to :canvas
  belongs_to :product

  include PublicActivity::Common

  after_create :create_activity

  def create_activity
    @cp = self
    @cp.create_activity :create, recipient: @cp.canvas
  end  
end

我認為問題出在您的after_create回調方法名稱上。 您已使用與gem的方法名稱相同的名稱定義了它。 因此,它僅覆蓋了gem的內置方法。 因此,當您致電:

@cp.create_activity :create, recipient: @cp.canvas

您實際上是在調用模型中定義的實例方法create_activity ,而不是gem提供的方法。 並請注意,您定義的方法不接受任何參數,但是在上一行中,您實際上是在傳遞參數。

那么,您可以嘗試將after_create回調方法名稱重命名為其他名稱嗎? 喜歡:

after_create :create_new_activity

def create_new_activity
    @cp = self
    @cp.create_activity :create, recipient: @cp.canvas
end 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM