私の Rails プロジェクトには、Activity という名前のコントローラーがあり、このモジュール 'Sortable' が含まれています。
コントローラ:
class ActivitiesController < ApplicationController
include Sortable
...
モジュール (ワーキング):
module Sortable
def save_positions
@ids = params[:ids]
# ~ Converting to array separating by ','
@ids = @ids.split(",")
count = 0
# ~ Saving new positions
for i in @ids
Activity.update(i, {:position => count})
count += 1
end
render :json => :success
end
end
しかし、コードをリファクタリングすると、他のコントローラーで使用できます。
編集済み
require 'active_support/concern'
module Sortable
extend ActiveSupport::Concern
module InstanceMethods
def save_positions
@ids = params[:ids]
# ~ Converting to array separating by ','
@ids = @ids.split(",")
count = 0
# ~ Saving new positions
for i in @ids
update(i, {:position => count})
count += 1
end
render :json => :success
end
end
end
私が間違っていることは何ですか?
新しいエラー メッセージ:
ArgumentError (wrong number of arguments (2 for 0)): app/controllers/activities_controller.rb:61:in
「アクティビティ」を次から削除しました。
Activity.update(i, {:position => count})