Destroying clicked GameObject

Hi there!
I have a problem with actions with clicked gameObject.
I have 10x10 board full off random colour rectangles, which are actually prefabs.
After generating this board (called map in my code) I would like to destroy selected rectangles by clicking them.
Map is a parent, and every prefab rectangle is a child of it. Map has script On_clicked, which should get reference to clicked gameObject and destroy it. Every rectangle has script as well, which should send reference to it.
After clicking on rectangle, nothing happens.
Maybe You will know where the problem is…
So here is the code for single rectangle:

public class czerwony : MonoBehaviour {
   public On_Click control;
    void Start()
    {
        control = GameObject.Find("map").GetComponent<On_Click>();
        //control = GetComponent<On_Click>();
    }// end start
    void OnMouseDown()
    {
        control.DoSomethingToClicked(this.transform.gameObject);
        //Destroy(gameObject);
    }
	
	// Update is called once per frame
	void Update () {
		
	}

And here is for map:

public class On_Click : MonoBehaviour {
    //GameObject puzzle;
    // Use this for initialization
   public  GameObject clickedGameObject;
    public void DoSomethingToClicked(GameObject clickedOn)
    {
        clickedGameObject = clickedOn;
        Destroy(clickedGameObject);
    }
        void Start () {
	}
	
	// Update is called once per frame
	void Update ()
    { 
    }
    
}

Give it a try.
Code for a single rectangle:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class czerwony : MonoBehaviour
{
	private event System.Action<GameObject> action;
	
	private void Awake()
	{
		this.action = GetComponentInParent<On_Click>().DoSomethingToClicked;
	}
	
	private void OnMouseDown()
	{
		if (this.action != null)
			this.action(this.gameObject);
	}
}

Code for a map:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class On_Click : MonoBehaviour
{
	public void DoSomethingToClicked(GameObject clickedOn)
	{
		Debug.Log(clickedOn.name);
		Destroy(clickedOn);
	}
}

Thanks for answer,
unfortunately it does not work properly.
First of all I cannot get action via GetComponentsInParent, I need to use standard GetComponent.
All prefabs were made by using childs of map, so I don’t know why it is like that.
Second problem is this error:
ArgumentException: Value does not fall within the expected range.
czerwony.Awake () (at Assets/czerwony.cs:10)
UnityEngine.Object:Instantiate(GameObject, Vector3, Quaternion)
spawn:Generuj_plansze(Int32, Single) (at Assets/skrypty/spawn.cs:37)
spawn:Start() (at Assets/skrypty/spawn.cs:208)

And it calls this.action = GetComponent<On_Click>().DoSomethingToClicked; this line.
Any ideas?

Here is the documentation for OnMouseDown:

Do you have Physics.queriesHitTriggersenabled? Make sure the colliders aren’t triggers or make sure that this setting is enabled.