別のビュー内から 1 つのコントローラーのメソッドを呼び出そうとしています。次の投稿Rails call destroy method from within another controllerを見ましたが、実装に何か問題があります。
呼び出そうとしているメソッドは、アクセサー コントローラーにあります。
def remove_permission_from_index
Accessor.find(params[:id]).destroy
respond_to do |format|
format.html { redirect_to tasks_url }
format.json { head :no_content }
end
end
このコントローラーには、次の強力なパラメーター メソッドもあります。
def accessor_params
params.require(:accessor).permit(:accessor_id, :access_rights, :task_id)
end
私の見解は次のコードを呼び出しています
<%= link_to 'Delete', {:controller => "accessors", :accessor => elem} ,method: :remove_permission_from_index, data: { confirm: "Are you sure?" }%> </p>
elem は、タスク コントローラで定義されたセット内の要素です。
@canEdit = Accessor.select(:task_id).where("accessor_id = ? AND access_rights = ?", current_user, true)
@canEdit.each do |p|
p.task = Task.find(p.task_id)
コードを実行すると、次のエラーが表示されます
param not found: accessor
def accessor_params
params.require(:accessor).permit(:accessor_id, :access_rights, :task_id)
end
end
アクセサーパラメーターが渡されていないことがわかります。
Parameters:
{"_method"=>"remove_permission_from_index"}
a) 別のメソッドにアクセスしようとすると、なぜ accessor_params が呼び出されるのですか? b) 何が間違っていますか? やっぱりセットする:accessor => elem